怎么解决shiro会话超时302问题
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"怎么解决shiro会话超时302问题"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!产
千家信息网最后更新 2026年11月01日怎么解决shiro会话超时302问题
本篇内容介绍了"怎么解决shiro会话超时302问题"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
产生异常的情况:nginx配置了https,但是nginx转发请求到web应用走的http,会话超时,shiro会重定向到登录页,这时重定向的是http地址,比如http://xxxxx/login/index ,浏览器会阻止这样的请求(从https页面发起http请求是非法的)。
重写shiro的FormAuthenticationFilter
public class MyShiroAuthcFilter extends FormAuthenticationFilter { public MyShiroAuthcFilter(String loginUrl) { super(); setLoginUrl(loginUrl); } @Override protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception { if (isLoginRequest(request, response)) { return super.onAccessDenied(request, response); } else { if (isAjax((HttpServletRequest) request)) { // 处理ajax请求 HttpServletResponse httpServletResponse = WebUtils.toHttp(response); httpServletResponse.addHeader("REQUIRE_AUTH", "true"); // ajax全局设置中有用 httpServletResponse.setStatus(HttpStatus.UNAUTHORIZED.value()); // 改变302状态码 } else { saveRequest(request); request.getRequestDispatcher(getLoginUrl()).forward(request, response); // 由于是nginx转发的,_redirect 302会重定向到http协议,不是浏览器期望的https // saveRequestAndRedirectToLogin(request, response); } return false; } } private boolean isAjax(HttpServletRequest request) { String requestedWithHeader = request.getHeader("X-Requested-With"); return "XMLHttpRequest".equals(requestedWithHeader); }}shiro的filter配置
@Beanpublic ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) { String loginUrl = "/login/index"; ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean(); Map filters = shiroFilter.getFilters(); filters.put("anon", new AnonymousFilter()); filters.put("authc", new MyShiroAuthcFilter(loginUrl)); Map filterChainDefinitionMap = new LinkedHashMap<>(); filterChainDefinitionMap.put("/supervisor/**", "authc"); filterChainDefinitionMap.put("/**", "anon"); shiroFilter.setSecurityManager(securityManager); shiroFilter.setLoginUrl(loginUrl); shiroFilter.setUnauthorizedUrl("/login/unauthorized"); shiroFilter.setFilters(filters); shiroFilter.setFilterChainDefinitionMap(filterChainDefinitionMap); return shiroFilter;} ajax全局设置
$.ajaxSetup({ complete: function (xhr, status) { if (xhr.getResponseHeader('REQUIRE_AUTH') == 'true') { alert("未登录或登录超时!"); window.top.location.href = getHost() + '/login/index'; return; } }});/login/index页面处理
"怎么解决shiro会话超时302问题"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
登录
浏览器
浏览
问题
全局
内容
地址
情况
更多
知识
页面
处理
配置
实用
学有所成
接下来
困境
实际
文章
有用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网扶贫科技
齐家互联网科技
盛创互联网科技有限公司
云创客互联网科技公司
互联网科技中介
南山科技园互联网公司有哪些
互联网科技创新服务
全球顶尖互联网科技公司
互联网和黑科技的看法
互联网为啥属于高科技
中国互联网公司排名锤子科技
互联网科技创新的路径
上海京穆互联网科技有限公司
江苏互联网智能科技软件
郑州欣桑互联网科技有限公司
新氧科技和美国互联网有关系吗
江苏互联网智能科技产品出厂价
安徽零酒互联网科技有限公司
每日互联网科技新闻
如何强化互联网金融科技
手冲咖啡和咖啡机区别
深圳市人人互联网科技有限公司
科技创新与互联网经济
互联网科技汛
烟台灵鸽互联网科技有限公司
互联网安防科技感
互联网时代科技型公司的机会
中国新注册互联网科技
米泉互联网科技专业怎么样
互联网 科技节活动 微视频大赛