(四)cas自定义QueryDatabaseAuthenticationHandler

CAS内置了一些AuthenticationHandler实现类,如下图所示,在cas-server-support-jdbc包中提供了基于jdbc的用户认证类。

(四)cas自定义QueryDatabaseAuthenticationHandler

如果需要实现自定义登录,只需要实现org.jasig.cas.authentication.handler.AuthenticationHandler接口即可,当然也可以利用已有的实现,比如创建一个继承自 org.jasig.cas.adaptors.jdbc.AbstractJdbcUsernamePasswordAuthenticationHandler的类,实现方法可以参考org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler类:    

 

(四)cas自定义QueryDatabaseAuthenticationHandler

   

修改authenticateUsernamePasswordInternal方法中的代码为自己的认证逻辑即可。

自定义错误提示消息

CAS AuthenticationException结构如下图,CAS已经内置了一些异常,比如用户名密码错误、未知的用户名错误等。

 

(四)cas自定义QueryDatabaseAuthenticationHandler

当用户名输入正确,而密码错误时提示“密码错误”

只需要在自定义的AuthenticationHandler类的验证方法中,验证失败的地方抛出异常即可。

自定义AuthenticationHandler示例代码如下:

 

(四)cas自定义QueryDatabaseAuthenticationHandler

   

 

配置使自定义登录认证生效

最后需要修改AuthenticationManager bean的配置(一般为修改WEB-INF/spring-configuration/applicationContext.xml文件),加入自定义的AuthenticationHandler,配置示例如下:  

(四)cas自定义QueryDatabaseAuthenticationHandler