第三章 cas简单数据库认证配置

来源:互联网 发布:国研网数据库免费入口 编辑:程序博客网 时间:2024/05/03 17:29

我们的用户信息大多存放在数据库中,所以我们就需要使用数据库验证我们的帐号密码,本章为你讲解数据库的配置

加入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" />

这个handler是默认的测试handler,验证的帐号密码都为admin
替换为
<!-- 数据库查询认证处理器 --><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),    'cxh5060@163.com' -- email - IN varchar(50),    '17000000000' -- cellphone - IN varchar(20),    'cxh5060' -- user_account - IN varchar(30) )
现在你可以使用帐号cxh5060,密码123456登录了

到这里数据库的简单配置就完成了


0 0
原创粉丝点击