【cas】常用的cas登录验证规则

来源:互联网 发布:影楼修片软件mac版 编辑:程序博客网 时间:2024/05/19 16:27
我们在运行简单的cas程序时,使用默认的登录的验证规则,用户名=密码,就会验证成功就可以访问受保护的资源了。但是,在项目中是要通过对数据库中的用户信息进行验证的。这里,来总结一下cas中数据库验证的两种方式。首先,修改配置文件deployerConfigContext.xml找到name="authenticationHandlers"的配置。将原有的配置注掉。原有的配置信息:这里的的class对应于cas源码中的类是指定了cas登录的验证规则为用户名=密码。
 <bean                  class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
接下来开始配置我们的数据库验证方式

一、QueryDatabaseAuthenticationHandler

在原有配置的list列表中天添加如下代码:
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">            <property name="dataSource" ref="dataSource" ></property>            <property name="sql" value="select password from ta_allusers where userCode=? " ></property></bean>
这一段的配置指定了,通过配置的sql语句查询出来的password和你登录时输入的用户名的密码进行匹配,如果匹配可以成功,那么登录就可以成功了。当然只配置这个当然不可以,还不知道要去查询那个数据库呢不是。指定数据源。
<bean id="dataSource"            class="org.springframework.jdbc.datasource.DriverManagerDataSource">            <property name="driverClassName" value="com.mysql.jdbc.Driver" />            <!--<property name="url" value="jdbc:mysql://localhost:3306/itoo_cloudroot" />-->            <property name="url" value="jdbc:mysql://192.168.22.246:3306/itoo_cloudroot" />            <property name="username" value="authority" />            <property name="password" value="authority" />                  </bean>

二、SearchModeSearchDatabaseAuthenticationHandler

通过这种方式来进行数据库验证,数据源的配置不变,只需要将authenticationHandlers配置的list换成下面的配置即可。
<bean class="org.jasig.cas.adaptors.jdbc.SearchModeSearchDatabaseAuthenticationHandler">                    <property name="dataSource" ref="dataSource"></property>                    <property name="tableUsers" value="ta_allusers"/>                    <property name="fieldUser" value="userCode"></property>                    <property name="fieldPassword" value="password"></property>                </bean>
这种方式是通过指定数据库中的某张数据表,并且指定好用户名和密码的字段来进行验证。

三、自定义验证规则

以上是通过数据库进行验证的几种方式。那么,如果想要自定义验证,我们可以通过直接重写AbstractUsernamePasswordAuthenticationHandler类来实现。
public class myAuth extends AbstractUsernamePasswordAuthenticationHandler {    @Override    protected boolean authenticateUsernamePasswordInternal(            UsernamePasswordCredentials credentials)            throws AuthenticationException {         final String username = credentials.getUsername();         final String password = credentials.getPassword();         StringBuffer sBuffer=new StringBuffer(username);         if(sBuffer.reverse().toString().equals(password)){             return true;         }        return false;    }}
同时需要将配置文件中的类改成自定义类的全限定名。
<bean class="com.wyy.auth.myAuth"></bean>
以上是cas进行登录验证的几种规则。最常用的还是数据库验证的两种方式。
1 0
原创粉丝点击