方案1:CAS默认的JDBC扩展方案:
CAS自带了两种简单的通过JDBC方式验证用户的处理器。
这两个处理类位于cas-server-support-jdbc这个扩展工程下。
第一步:改写用户验证处理器
deployerConfigContext.xml
把他替换成为 下面两种其中任意一个bean皆可。
把对应的用户表名、用户名、密码替换成为 你实际数据库中的 用户表名、用户名、密码对应的字段名称。
第二步:加载驱动(oracle、mysql任选一种),连接数据库
依然在这个文件中deployerConfigContext.xml,在最后一个标签之前,加上下面配置即可(oracle、mysql任选其一)。
第三步:导入必要的jar包
cas-server-webapp的pom.xml
重新启动项目,在登录页验证即可。
方案2:套用原有项目的用户登录逻辑( 非JDBC方式 )
背景:
1.因为是要整合多个项目的登录功能,换句话说,就是原有的项目其实分别都有已经实现的用户登录逻辑页面、登录逻辑,并且是经过了大量测试,程序逻辑比较健壮。
2.原有的项目并不是通过JDBC方式来访问数据库的,为了保持代码风格统一,最好与其他项目保持一致,或者直接套用原有的验证逻辑。(比如:我们项目使用的是Mybatis方式)
3.CAS扩展的JDBC验证方式还是过于简单,对于复杂的验证逻辑不便于扩展。
第一步:自定义一个用户验证处理器
可以在原有的cas-server-support-jdbc工程下,也可以自己新建一个工程
注意:本类要继承这个类 AbstractUsernamePasswordAuthenticationHandler
第二步:自定义异常处理器
因为CAS原有的异常处理逻辑是,只能通过errorcode去messages_zh_CN.properties寻找已经中定义好的异常消息,
如果找不到直接返回errorcode到页面,并不支持直接抛出文字形式的异常消息。还需要为每种异常都定义专属的异常类,例如:
BadCredentialsAuthenticationException.java
BadPasswordAuthenticationException.java
BadUsernameOrPasswordAuthenticationException.java
而本异常类可以直接接受Api抛出的所有异常,或者也可以自定义文字形式的异常消息。如:new Exception(“这是异常消息”)
同样也支持原有的根据errorCode读取异常消息的方式。
第三步:修改deployerConfigContext.xml
方案1中,在配置文件中配置了
JDBC方式的处理器bean、 连接数据库的BasicDataSource bean这里统统不需要。
直接找到这个处理器
把他替换成为自定义的验证处理器。
因为,访问数据库以及验证用户逻辑的处理都在UserApi中做处理,不需要CAS再做处理了。
第四步:pom.xml加载自定义的工程或者被修改的工程jar包
cas-server-webapp的pom.xml
或者用户自定义的项目
Original: https://www.cnblogs.com/java-class/p/8393564.html
Author: Orson
Title: CAS 单点登录【2】自定义用户验证
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/536982/
转载文章受原作者版权保护。转载请注明原作者出处!