我们的用户信息大多存放在数据库中,所以我们就需要使用数据库验证我们的帐号密码,本章为你讲解数据库的配置
加入cas-server-support-jdbc-3.5.2.jar(在之前下载的包中可以得到)、mysql-connector-java-5.1.34.jar、commons-pool.jar以及commons-dbcp-1.4.jar(数据源自行选择,这里用dbcp)
在 deployerConfigContext.xml 中添加数据源
<!-- DataSource,根据你的环境来定 --> <bean id="mysqlDataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://124.42.125.69:3306/ssodb?useUnicode=true&characterEncoding=utf-8"/> <property name="username" value="test"/> <property name="password" value="test"/> </bean>将下面这一段
<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
<!-- 数据库查询认证处理器 --> <bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> <property name="dataSource" ref="mysqlDataSource"/> <property name="sql" value="select password from user where user_account=?"/> <property name="passwordEncoder" ref="myPasswordEncoder"></property> </bean> <!-- 自己定义的密码转译器,你可以自己定义,也可以用CAS提供的 --> <bean id="myPasswordEncoder" class="org.jasig.cas.util.MyPasswordEncoder"/>
注意:org.jasig.cas.util.MyPasswordEncoder这个类对密码什么操作也不做,我们测试用这个,实际使用时根据需求自行加密密码,只需要实现org.jasig.cas.authentication.handlerl.PasswordEncoder 接口即可。
创建org.jasig.cas.util.MyPasswordEncoder
public class MyPasswordEncoder implements PasswordEncoder { @Override public String encode(String s) { return s; } }
<property name="sql" value="select password from user where user_account=?"/>是你的数据表中查询密码的语句,针对多条件查询,以后会讲到,这里先提一下。QueryDatabaseAuthenticationHandler.authenticateUsernamePasswordInternal()会将这个密码与用户提交的经过加密的密码进行比对。
数据库建表语句
<pre name="code" class="sql">DROP ssodb;CREATE DATABASE ssodb;USE ssodb;CREATE TABLE `user` ( `user_id` varchar(40) NOT NULL, `password` varchar(50) DEFAULT NULL, `email` varchar(50) DEFAULT NULL, `cellphone` varchar(20) DEFAULT NULL, `user_account` varchar(30) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO ssodb.user( user_id, password, email, cellphone, user_account)VALUES ( '1', '123456' -- password - IN varchar(50), '[email protected]' -- email - IN varchar(50), '17000000000' -- cellphone - IN varchar(20), 'cxh5060' -- user_account - IN varchar(30) ) 现在你可以使用帐号cxh5060,密码123456登录了
到这里数据库的简单配置就完成了