尊重原创:https://www.cnblogs.com/xrab/p/5800623.html
效果展示:
shiro项目详细介绍: 链接
1. 首先资源下载shiro 项目资源(基于maven),资源下载 :
链接:https://pan.baidu.com/s/1-ppIvgNP0DECp4NY2_fAGw
提取码:3cmi
2. cas-server 搭建 (有资源下载): https://blog.youkuaiyun.com/qq_29477175/article/details/89886123
首先遇到一个问题,注销时不会跳转到cas的登录页面,应该是 cas 自己设置的问题,这个问题已经解决,修改下cas.properties中 cas.logout.followServiceRedirects=true 即可,默认是被注释的。
3. 接着就是shiro集成cas-server的项目:资源下载:
链接:https://pan.baidu.com/s/1cNTb-819bDsGVXPQZpZSsQ
提取码:sz8k
这些配置文件、基本步骤在上面的原创中都可以看到。
感悟:
其实就是之前的shiro项目当做cas-client端,去请求cas-server服务端;返回一个token进行授权操作。
1. loginUrl 对应 http://localhost:8090/cas/login?service=http://127.0.0.1:8080/shiro/shiro-cas
2. 有一个 CasFilter,设置登录走这个filter,在shiro的自定义权限内容中设置 /shiro-cas = casFilter ,filters中设置casFilter对应自己设置CasFilter。对应的class 为 org.apache.shiro.cas.CasFilter。
3. 将securityManager 中原来的realm 改成 CasRealm。其实走的是CasRealm。
新建一个CasRealm 继承 CasRealm,重写 doGetAuthenticationInfo 与 doGetAuthorizationInfo 方法,在认证方法(doGetAuthenticationInfo )中,通过从cas-server端获取了一个 AuthenticationToken,这个其实在cas-sever端已经验证过了,获取的AuthenticationToken 中只有一个用户的userID(唯一标识,也是登录时的用户名)。接着再进行一系列的操作:连接数据库、授权之类的。
还有一个问题没解决:
shiro集成cas成功后,第一次登录是没问题的,注销时再次登录,会报验证出错。。待解决。