资讯专栏INFORMATION COLUMN

Limesurvey二次开发(接入CAS统一身份认证)随笔

Cympros / 1788人阅读

摘要:在我开发之前只看见上海交通大学完成了自己的二次开发,并且接入了自己学校的统一身份认证系统,除此之外,南京大学也打算做这个东西,然而过去了两年,好像还是没有完成开发。具体的实现可以参照上海交通大学的问卷吧系统。

Limesurvey是一个比较著名的开源问卷调查项目,GitHub地址:https://github.com/LimeSurvey/LimeSurvey

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

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

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);

插件地址:https://github.com/univlorraine/limesurvey-cas

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

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

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

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

 

写在后面:

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

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

原文地址:http://life.rccoder.net/php/1092.html

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21110.html

相关文章

  • Shiro的统一认证授权

    摘要:的统一认证授权是下面的一个简单,易用的权限框架,对于单体应用来讲,完全能够极好的,快速的满足权限的需求,所以一般在做项目的时候,都会成为开发者的首选。 Shiro的统一认证授权 Shiro是Apache下面的一个简单,易用的Java权限框架,对于单体应用来讲,Shiro完全能够极好的,快速的满足权限的需求,所以一般在做项目的时候,Shiro都会成为开发者的首选。 可是,如果你需要做第二...

    cocopeak 评论0 收藏0
  • CAS 5.2.x 单点登录 - 搭建服务端和客户端

    摘要:一简介单点登录,简称为,是目前比较流行的企业业务整合的解决方案之一。客户端拦截未认证的用户请求,并重定向至服务端,由服务端对用户身份进行统一认证。三搭建客户端在官方文档中提供了客户端样例,即。 一、简介 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系...

    Lin_YT 评论0 收藏0
  • 统一认证 - Apereo CAS 简介

    摘要:在将臭未臭之前,我们赶紧把其中的统一认证这块过一下。的历史前面说了是耶鲁大学实验室的在年出的一个开源系统。这次我们先看看官网出的一幅图,这张图片介绍了的组成以及支持的各种协议,各种特性,不烦看看 为什么要做这个尝试? 微服之道,方兴未艾;农之来学者,盖已千者! 这句是从《陶山集·太学案问》瞎改出来的。意思就是微服务的架构理念还在不断地发展,现在整个啥都 言必出微服务,差点都到了 没学...

    zhunjiee 评论0 收藏0
  • 统一认证 - Apereo CAS 客户端的集成以及小结

    摘要:所以客户端的集成主要是单点登录的集成,客户端指定需要做安全认证的页面,然后的安全包检测校验用户登录情况,并自动与登录页面进行跳转交互。提供了很多配置的方式,有,,以及其他可查官网。但高度自由的一如既往的,没有提供可视化操作的界面。 前两篇介绍了Apereo CAS以及服务器端的安装,但还不够完整,服务端还没有Application真正用起来呢!这篇文章将介绍怎么用起来 集成的目的 客户...

    AbnerMing 评论0 收藏0
  • 号外:友户通支持企业自有用户中心啦

    摘要:针对这种情况,友户通特定开发了联邦用户中心来支持企业的自有用户中心。友户通支持通过协议使用企业内部的支持协议的用户中心账号进行登录。友户通目前支持标准协议以及友户通自定义协议可供企业集成。 友户通做用友云的用户系统也一年多了,经常听实施、售前等说要私有化部署友户通,原因无非是企业的考虑到用户安全性和单一用户账号的需求。但由于用户管理的复杂性,友户通部署与维护并不容易,因此经常纠结在用户...

    妤锋シ 评论0 收藏0

发表评论

0条评论

Cympros

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<