CAS SERVER 登录部分定制开发
来源:互联网 发布:淘宝的淘气值怎么提升 编辑:程序博客网 时间:2024/06/04 19:53
学习软件Moodle需要开发成无记录模式,集成CAS模式,一个用户绑定一个moodle账号,为了解决这个问题,需要定制开发CAS登录认证模块。
第一种方法:
修改模块如下:
cas-server-3.5.1
包路径 org.jasig.cas.authentication.principal;
修改类UsernamePasswordCredentials.java
将
/**
* @param userName The userName to set.
*/
public final void setUsername(final String userName) {
this.username = userName;
}
注释掉,修改代码如下,在每次设置用户名的时候,随机从mdl_user里选取一个账号,达到无记录的模式,方便管理员对系统学习账号的控制管理。
public final void setUsername(final String userName) {
//此处可定义业务逻辑,随机选择moodle的学习账号
if(userName.equalsIgnoreCase("sxyy0102016"))
{
this.username = "fdadmin";
-- SELECT username FROM mdl_user ORDER BY RAND() LIMIT n;
--n:数据条数
}
else
{
this.username = userName;
}
}
修改完后将编译后的class置入cas-server-core-3.5.1.jar包中,重启服务生效。
无记录学习模式改造成功。
第二种方法:
修改模块如下:
cas-server-support-jdbc-3.5.1
包路径 org.jasig.cas.adaptors.jdbc;
修改类QueryDatabaseAuthenticationHandler.java
将以下代码注释掉
protected final boolean authenticateUsernamePasswordInternal(UsernamePasswordCredentials credentials) throws AuthenticationException {
final String username = getPrincipalNameTransformer().transform(credentials.getUsername());
final String password = credentials.getPassword();
final String encryptedPassword = this.getPasswordEncoder().encode(
password);
try {
final String dbPassword = getJdbcTemplate().queryForObject(this.sql, String.class, username);
UsernamePasswordCredentials userinfo = (UsernamePasswordCredentials)credentials;
return dbPassword.equals(encryptedPassword);
} catch (final IncorrectResultSizeDataAccessException e) {
// this means the username was not found.
return false;
}
}
修改为:
protected final boolean authenticateUsernamePasswordInternal(UsernamePasswordCredentials credentials) throws AuthenticationException {
final String username = getPrincipalNameTransformer().transform(credentials.getUsername());
final String password = credentials.getPassword();
final String encryptedPassword = this.getPasswordEncoder().encode(
password);
// String mdl_sql = "SELECT username FROM mdl_user ORDER BY RAND() LIMIT 1";
String mdl_sql = "SELECT DISTINCT(username) FROM mdl_user a, mdl_course_display b WHERE a.id = b.`userid` ORDER BY RAND() LIMIT 1";
try {
final String dbPassword = getJdbcTemplate().queryForObject(this.sql, String.class, username);
UsernamePasswordCredentials userinfo = (UsernamePasswordCredentials)credentials;
if(dbPassword.equals(encryptedPassword) == true)
{
String mdl_userName = getJdbcTemplate().queryForObject(mdl_sql, String.class);
// credentials.setUsername("fdadmin");
System.out.println("mdl_userName="+mdl_userName);
credentials.setUsername(mdl_userName);
}
return dbPassword.equals(encryptedPassword);
} catch (final IncorrectResultSizeDataAccessException e) {
// this means the username was not found.
return false;
}
}
修改完后将编译后的class置入cas-server-core-3.5.1.jar包中,重启服务生效。
无记录学习模式改造成功。
- CAS SERVER 登录部分定制开发
- 定制CAS登录验证
- CAS 定制登录验证
- Spring Security定制开发 单点登录CAS定制开发 集成 配置文件
- cas server + cas client 单点登录 原理介绍
- cas server +cas client 单点登录配置实例
- cas 单点登录(SSO)之一: jasig cas-server 安装
- <学习笔记>cas server + cas client 单点登录 原理介绍
- <学习笔记>cas server + cas client 单点登录 原理介绍
- cas server + cas client 单点登录 原理介绍
- openjweb平台配置cas server单点登录
- 番外篇--体验cas server单点登录
- cas单点登录的开发文档地址
- 使用 WebSphere Studio Application Developer 的 WebSphere Portal Server 开发: 第 1 部分:Portal Server 2.1 的动态主题定制
- 第二部分:cas服务器增加登录验证码
- 第三部分:shiro集成spring使用cas单点登录配置
- 第四部分:spring security使用cas单点登录配置
- 第三部分:shiro集成spring使用cas单点登录配置
- 手机唯一标识生成方案
- 【设计模式】对象关系--结构型模式(3)
- Xcode 左上角IOS Simulator不可选其他系统模拟器
- Activity 中 onSaveInstanceState和onRestoreInstanceState 区别
- 打印出100-999之间的数所有的“水仙花数”。。所谓水仙花数,就是指3位数,其各位数字立方和等于该数本身。
- CAS SERVER 登录部分定制开发
- spring mvc路径匹配原则
- 测试WeakReference和PhantomReference
- android 队列模仿listview同步加载图片
- nodejs 简单爬虫(一)
- TextView设置字体显示个数,超出部分省略号表示, 或者设置显示行数,超出部分按省略号显示
- python实战的博客
- Json转换利器Gson—— List to Json
- 批量删除".svn"文件夹方法