cas之自定义代码查询认证
2016-03-30 23:00
357 查看
1、在eclipse中导入【cas-server-webapp-3.3.2.war(在cas-server/modules下面)】war项目,
2、添加 jar 引用文件:cas-server-support-jdbc-3.3.2.jar和mysql-connector-java-3.1.13-bin.jar
3、新建自定义类 CustomQueryDBHandler继承AbstractJdbcUsernamePasswordAuthenticationHandler
public final class CustomQueryDBHandler extends
AbstractJdbcUsernamePasswordAuthenticationHandler {
@NotNull
private String sql;
@Override
protected final boolean authenticateUsernamePasswordInternal(
final UsernamePasswordCredentials credentials)
throws AuthenticationException {
final String username = 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);
if (password==null ){
//在中messages_zh_CN.properties文件中添加以下信息(密码错误)
//error.authentication.credentials.bad.usernameorpassword.password=\u5bc6\u7801\u9519\u8bef
throw new BadPasswordAuthenticationException();
}
return dbPassword.equals(encryptedPassword);
} catch (final IncorrectResultSizeDataAccessException e) {
// this means the username was not found.
return false;
}
}
/**
* @param sql The sql to set.
*/
public void setSql(final String sql) {
this.sql = sql;
}
}
4、更改验证方式
<bean
class="com.tgb.handler.CustomQueryDBHandler ">
<property name="dataSource" ref="dataSource"></property>
<property name="sql" value="select PASSWORD from sso_t_user where LOGIN_NAME=?"></property>
</bean>
2、添加 jar 引用文件:cas-server-support-jdbc-3.3.2.jar和mysql-connector-java-3.1.13-bin.jar
3、新建自定义类 CustomQueryDBHandler继承AbstractJdbcUsernamePasswordAuthenticationHandler
public final class CustomQueryDBHandler extends
AbstractJdbcUsernamePasswordAuthenticationHandler {
@NotNull
private String sql;
@Override
protected final boolean authenticateUsernamePasswordInternal(
final UsernamePasswordCredentials credentials)
throws AuthenticationException {
final String username = 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);
if (password==null ){
//在中messages_zh_CN.properties文件中添加以下信息(密码错误)
//error.authentication.credentials.bad.usernameorpassword.password=\u5bc6\u7801\u9519\u8bef
throw new BadPasswordAuthenticationException();
}
return dbPassword.equals(encryptedPassword);
} catch (final IncorrectResultSizeDataAccessException e) {
// this means the username was not found.
return false;
}
}
/**
* @param sql The sql to set.
*/
public void setSql(final String sql) {
this.sql = sql;
}
}
4、更改验证方式
<bean
class="com.tgb.handler.CustomQueryDBHandler ">
<property name="dataSource" ref="dataSource"></property>
<property name="sql" value="select PASSWORD from sso_t_user where LOGIN_NAME=?"></property>
</bean>
相关文章推荐
- 详解Spring Boot 集成Shiro和CAS
- spring boot 1.5.4 集成shiro+cas,实现单点登录和权限控制
- jasig-cas 学习历程
- 配置完 Exchange Server 2010 CAS Array后需要做的
- CAS实现单点登录(SSO)经典完整教程(1)
- CAS实现单点登录(SSO)经典完整教程(2)
- ZCS与CAS(Central Authentication Service)单点登录系统的集成
- cas单点登录登出配置,学习记录
- 原创cas支持客户端应用验证
- 单点登录(cas)、缓存技术与负载均衡
- JAVA CAS原理深度分析
- cas单点登录
- CAS单点登录之重复登录的问题
- Lock-Free
- 解决Unable to read TLD "META-INF/c.tld" from JAR file
- Yale CAS实现原理及其基础协议
- CAS的配置,登录界面的更改以及数据库的连接--Java(Eclipse,非Maven)
- cas logout跳转到指定页面(带service)
- cas logout 报session already invalidated(struts2报错)