SpringMVC + Shiro重定向次数过多问题

简介: 企业级系统,内部服务数较多,单点登录简称(SSO)是系统不断增多必须要面临的一个问题.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

企业级系统,内部服务数较多,单点登录简称(SSO)是系统不断增多必须要面临的一个问题.

SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

今天在弄单点登录,用的是CAS。权限控制使用的是shiro,shiro有个shiro-cas子模块可以与CAS进行集成。

CAS原理

img_b16449f07881bd9bca3d94ea349ee3d3.png
image.png
  • CAS服务端:主要用于对CAS客户端进行认证和授权,实现方式为发放和验证ticket来实现。
  • CAS客户端:一般是可以通过支持的协议(例如,CAS,SAML,OAuth)与服务端进行通信的客户端,可以是某些软件包,也可以是具体的应用。在企业系统中一般为一个个的服务。

具体可参考官网

具体错误

说一下今天遇到的具体问题,感觉自己脑袋反应不灵活啊,我用的Spring Boot集成Shiro与CAS,在配置Shiro相关的Bean的时候。
因为要自定义一些过滤器,ShiroFilter中可以设置自己的Filter,当设置自己的Filter的时候,默认的Filter会被覆盖掉。

我自定义的Filter都配置成了Spring的Bean,并且把Shiro的LogoutFilter也配置成了Bean
Spring Boot默认加载所有的Filter Bean并且在请求的时候都会生效,这样就导致每次请求LogoutFilter都会生效,然后每次的登录信息都被清除,清除登录信息之后,其它的认证相关Filter也继续起作用,并且执行登录方法,登录失败重定向到登录页面,登录页面也会调用LogoutFilter,总之就是一直重定向了。

知识点

今天的错误就是对Spring的知识点理解不够透彻导致的,Spring中配置的所有Filter Bean默认都会生效。

最后

一个小问题,把自己的问题记录下来,省的以后别人问自己遇到过什么问题吗?然后自己连个问题都说不出来。

参考

目录
相关文章
|
4月前
|
存储 前端开发 Java
SpringMVC中重定向请求时传输参数原理分析与实践
SpringMVC中重定向请求时传输参数原理分析与实践
88 2
SpringMVC中重定向请求时传输参数原理分析与实践
|
22天前
|
缓存 前端开发 Java
SpringMVC请求处理过程
SpringMVC请求处理过程
42 0
|
8月前
|
存储 容器
shiro配置路径为anno,但请求还是拦截下来了
shiro配置路径为anno,但请求还是拦截下来了
210 2
|
9月前
SpringMVC 如何设定重定向和转发的?
SpringMVC 如何设定重定向和转发的?
40 0
boot 中自定义shiro过滤器的拦截顺序
@boot 中filter SecurityUtils.getSubject()No SecurityManager accessible
boot 中自定义shiro过滤器的拦截顺序
|
NoSQL 安全 Java
几行代码,搞定 SpringBoot 接口恶意刷新和暴力请求!
几行代码,搞定 SpringBoot 接口恶意刷新和暴力请求!
|
缓存
JavaWeb-过滤器Filter学习(二)设置全站编码与设置页面缓存
JavaWeb-过滤器Filter学习(二)设置全站编码与设置页面缓存
226 0
JavaWeb-过滤器Filter学习(二)设置全站编码与设置页面缓存
|
存储 JSON 前端开发
SpringMVC数据响应方式
SpringMVC数据响应方式
194 0
SpringMVC数据响应方式
|
缓存 Java 数据库
在Shiro框架内使用缓存注解失效的解决办法
这个问题困扰了我好多天 问题 ServiceImpl类里的方法上有缓存注解,用于将返回的实体类存入redis,下次调用时就不需要通过数据库获取实体类信息。
1304 0
|
前端开发 Java Spring
springMVC使用拦截器检查用户登录
参考文章 编写拦截器类 package cultivate_web.interceptor; import javax.servlet.http.HttpServletRequest; import javax.
1228 0