今天我们来了解下cas的数据源配置,默认cas登录使用的是简单的用户名和密码一致就可以登录,简单几步操作就可搞定:
1、打开%CATALINA_HOME%/webapps/cas/WEB-INF/deployerConfigContext.xml
2、大概在129行找到如下代码:
<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler"/>
这个就是cas默认使用的登录验证方式,用户名=密码即可登录系统
3、使用以下两种方式之一,替换上面的代码:
<bean id="SearchModeSearchDatabaseAuthenticationHandler" class="org.jasig.cas.adaptors.jdbc.SearchModeSearchDatabaseAuthenticationHandler" abstract="false" lazy-init="default" autowire="default"> <property name="tableUsers"> <value>user</value><!--用户表--> </property> <property name="fieldUser"> <value>name</value><!--数据表中的用户名字段--> </property> <property name="fieldPassword"> <value>password</value><!--数据表中的密码字段--> </property> <property name="dataSource" ref="dataSource" /><!--数据源--> <!--密码加密器--> <!--<property name="passwordEncoder" ref=""/>--> </bean>
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> <property name="dataSource" ref="dataSource" /><!--数据源--> <property name="sql" value="select password from some_table where lower(username) = lower(?)" /><!--通过用户名从数据库中查找密码--> <!--密码加密器--> <!--<property name="passwordEncoder" ref=""/>--> </bean>
4、配置数据源(以mysql为例)
在配置文件的最下面加入如下bean信息:
<!-- MySQL connector --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value>jdbc:mysql://localhost:3306/mydb</value> </property> <property name="username"> <value>root</value> </property> <property name="password"> <value>root</value> </property> </bean>
5、需要添加的jar
cas-server-support-jdbc-3.5.2.jar commons-collections-3.2.jar commons-dbcp-1.2.1.jar commons-pool-1.3.jar
以上5步就配置成功了,但是实际当中我们的密码可能是加密的,怎么解决呢?看下面:
6、回头看第3步,打开里面的密码加密器,自己编写一个类,此类继承自org.jasig.cas.authentication.handler.PasswordEncoder,重写encode方法,根据自己项目的加密算法加密登录用户输入的密码返回即可。
参考资料:https://wiki.jasig.org/display/CASUM/Using+JDBC+for+Authentication
本文出自 luoshengsha.com,欢迎转载,转载时请注明出处及相应链接。
本文永久链接: http://www.luoshengsha.com/450.html