上一篇演示单点登入服务端认证机制采用的是cas server默认的用户名和密码(admin/admin)。今天介绍正常项目中如何通过验证DB中的用户数据,来验证用户的密码的合法性
自定义验证登入有两种方式:
- 采用cas-server默认的数据库查询认证扩展方法
- 采用我们自己定义的查询认证方法
一:采用cas-server默认的数据库查询认证扩展方法
我们上一篇博客用的最简单的SimpleTestUsernamePasswordAuthentica去验证用户名密码,而cas自带
QueryDatabaseAuthenticationHandler和SearchModeSearchDatabaseAuthenticationHandler这两个类作为JDBC方式验证用户的处理器。这两个处理类位于cas-server-support-jdbc这个扩展工程下。
1、添加cas支持db相关的jar包,以及mysql的驱动包
在D:\soft\apache-tomcat-7.0.55\tomcat_cas\webapps\cas\WEB-INF\lib目录添加下面两个jar包:
cas-server-support-jdbc-3.4.10
mysql-connector-java-3.1.12-bin.jar
2.修改cas-server相关的配置文件:
修改D:\soft\apache-tomcat-7.0.55\tomcat_cas\webapps\cas\WEB-INF\deployerConfigContext.xml文件:
找到 :
<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
修改为:
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="dataSource" ref="dataSource"/>
<property name="sql" value="select password from t_user where name=?" />
<property name=