但由于种种原因,虽然用搜索引擎能够依稀看见很多高校希望使用它来建设自己学校的调查问卷系统,但在国内完成率比较低下。在我开发之前只看见上海交通大学完成了自己的二次开发,并且接入了自己学校的统一身份认证系统,除此之外,南京大学也打算做这个东西,然而过去了两年,好像还是没有完成开发。

猜测,国内比较滞后的原因有以下的两年:

1、调查问卷系统属于校园的非核心业务,能够利用第三方系统(问卷星等)解决问题,再利用iframe进行网页的嵌套,完全没有自己花钱开发的太大必要。

2、国内Limesurvey的参考资料特别少,甚至连如何去使用的文档都特别少,更不用谈是开发文档。 由于大多是英文文档,国内使用比较迟钝。

高校进行开发,主要是两个问题,一个是接入自己的全校身份统一认证系统(大学学校使用的是开源的CAS系统),其次就是改变他自己的非现代风格样式。

Limesurvey是用PHP+多种数据库进行开发的。使用的框架是某个版本的YII(估计还经过自己的改造),变量比较多,代码量也比较大。

样式问题比较简单,一般情况下可以修改他比较原始的表格布局,替换成现代的DIV布局。或者直接修改CSS样式即可。但并非所有能看到的东西都是通过模板渲染引擎来实现的,有很大的一部分是在自己控制的类里面echo直接输出的。

比较重要的是接入CAS认证系统,基本上可以分为两个部分:

利用CAS系统进行后台的登录,登录后可以发布调查问卷

针对发布的调查问卷做一定权限控制。最为基础的就是把调查问卷分为两部分,一部分填写调查问卷需要进行CAS的认证,一部分对所有的人进行开放。

具体的实现可以参照上海交通大学的问卷吧系统。

利用CAS系统进行后台的登录

limesurvey系统对用户的要求主要有ID, name, email, password. 这些东西除了password之外基本上CAS的attributes都可以以一个数组的形式进行提供,如果提供不了就可以和password一样处理,即符合他要求的格式即可(比如哈尔滨工业大学的无法提供email, 可以给每个账户的默认email是学号@hit.edu.cn)

我们需要做的首先是在配置中打开 authcasautocreate_permission, 具体可以参见config-default.php中的配置内容。网址:https://github.com/LimeSurvey/LimeSurvey/blob/master/application/config/config-defaults.php#L187 ,一般情况下开启create即可实现自动创建用户的权限

然后就是创建用户的东西了:

大体上是在登录之前进行检测是否登录(参见官方提供的SDK),在没有登录的情况下跳转到CAS服务器,然后跳转回来的时候即可获取到CAS服务器提供的一些基础信息。然后对新创建的用户进行一些设置。

实现起来不是特别的复杂。更为重要的事,有人已经关于这个问题进行过相关的开发,并且有一个插件,你只需要进行简单的修改就可以实现登录登出这一块的问题了(在我的帮助下,现在已经兼容最新版的Limesurvey);

用CAS控制调查问卷的访问权限

Limesurvey在设计的时候就已经考虑过类似的问题,即不是针对所有的人都开放调查问卷。具体的内容是在后台的“发布与访问控制”中“使用验证码”来控制码。

这个原始的功能就是为了防止机器等暴力填写调查问卷,而出现了验证码这一操作,在设计上很符合接入CAS统一认证。

如此,我们只需要替换相关的代码。即把之前的验证码相关的代码替换成CAS部分即可对问卷的访问权限进行有效的控制。

写在后面:

正如本文所说的一样,本文只是提供一下开发过程中遇到的问题的大体解决思路,并不涉及如何去二次开发这个过程。

如果你恰巧也在进行这个开发,有什么问题欢迎在评论中指出。

limesurvey php5.2,Limesurvey二次开发(接入CAS统一身份认证)随笔相关推荐

  1. Dynamics 365 CRM 接入统一身份认证平台(单点登录集成)

    打算将D365 CRM接入公司统一身份认证平台. 前提:D365 已IFD部署,因为要借助ADFS来完成单点登录. 登录ADFS服务器,打开ADFS,本次集成,统一身份认证为上游,ADFS是下游,因为 ...

  2. SCPPO(二十一):系统统一身份认证的改造之路(续)

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 在上篇博文中小编为大家分享了<SCPPO:系统统一身份认证的改造之路>,由 ...

  3. SCPPO(二十):系统统一身份认证的改造之路

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 小编最近做的项目主要工作是维护,项目基本功能已经实现,平常时修改一些Bug或根据需求做 ...

  4. 微信二次开发接入php代码,适合新手学习的laravel接入微信接口,实现微信公众号二次开发...

    最近使用laravel做微信公众号二次开发,发现网上能够参考的资料基本上很少,很多地方都讲的不够详细,致使许多新手采坑无数,所以这篇文章讲一下如何使用laravel接入微信接口,实现微信公众号二次开发 ...

  5. limesurvey php5.2,limesurvey(配置心得)

    源码包安装命令: rpm -ivh 包名 yum localinstall 包名              //可以防止出现依赖性 个安装包安装好之后,需要配置数据,数据库 create databa ...

  6. 海康威视ISC平台的VUE二次开发接入实现

    第一步 领券 m.cps3.cn 取得ISC平台的appkey以及secret,以及安装ISC平台的主机IP,这一步至关重要!!! 第二步 由于目前我所在的公司项目前端的代码均由vue所实现,所以利用 ...

  7. 微信企业号开发之 企业号人员身份认证与开发

    前言 这里完全可以链接一个登录页面,让用户输入用户名密码进行登录的...2333 但是,这样所就完全失去了微信企业号的意义,本来进入微信企业号的时候,就已经对人员身份进行认证了,你这里再让别人登录,不 ...

  8. vue接入万达IAM(统一身份认证登录)记录

    1.需先提前申请测试环境下的 clientId 和 clientSecret 2.第一步获取授权码的 code 接口 和 退出登录的接口,均通过 window.loaction的方式请求 即: win ...

  9. 微信公众号开发接入,利用微信公众平台申请测试号进行本地开发

    一.前言 随着微信的普遍,年轻一代逐渐从QQ转到微信的使用.界面简洁,功能强大,男女老少皆宜是微信的特点,也正是靠着这一特点,从而使得微信在国内成为了社交软件的巨头.因此在微信端里就衍生了很多的产品需 ...

  10. SAP 2019 TechEd Key Note解读:云时代下SAP从业人员如何做二次开发?

    刚刚过去的在巴塞罗那举行的2019 SAP TechEd,SAP照例向全球广大的SAP生态圈从业者们传达了一些重要的信息,其中一条为:Building Extensions for the Intel ...

最新文章

  1. 虚幻引擎的数学知识学习教程 Math for Unreal Engine (Early Preview)
  2. 中国研究的超级系统计算机,学习电脑 - Book3 - V1.30 - 超级系统恢复
  3. 浅析COM的思想及原理
  4. 基于升序链表的定时器
  5. burpsuite小米手机抓包_使用burpsuite实现Android APP的HTTPS抓包
  6. Linux文本编辑器之vim
  7. java基础三--IO流(1)
  8. 【NLP】自然语言处理中词性、短语、短语关系标签的具体含义列表
  9. 21天学通Java调用不存在的对象或成员变量
  10. Linux操作系统原理与应用(陈莉君)——学习笔记
  11. Android 请求Root权限代码
  12. 51实现todos-完整js
  13. 上项线体表位置_人体体表定位标志
  14. Fragment重叠问题简单解决方案
  15. 4、项目融资 - 打造企业上市系列文章
  16. 昨天写了一个小日历,日历显示一年的日历,暂时设定位2017年,分三个种代码...
  17. ATFX:5年期LPR利率大降15基点,USDCNH涨破年内高点
  18. Android初体验——UI
  19. 跑groud truth的disparity
  20. 【python】习题第9周

热门文章

  1. obs源码分析【四】:obs录制的窗口截图与视频编码
  2. libcrypto yum 安装_centos7下nginx 报错需要安装 libcrypto.so.10(OPENSSL_1.0.2)(64bit)
  3. Arduino(c) 16进制转字符串
  4. 《统计学》第八版贾俊平第十三章时间序列分析和预测知识点总结及课后习题答案
  5. Unity世界坐标转换屏幕坐标(详解)
  6. 百亿级微信红包的高并发资金交易系统设计方案
  7. java a标签实现文件下载_a标签实现文件下载 避免直接打开问题
  8. FasterRCNN
  9. 数据库 使用 笛卡尔积两表联查 查询sql语句
  10. jdy ble sdk android,JDY-18蓝牙模块 连接blinker超时