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

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

加入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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值