SpringBoot整合Apache Shiro 重定向时去掉URL中的JSESSIONID--重写getSessionId方式
Posted 闲言博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot整合Apache Shiro 重定向时去掉URL中的JSESSIONID--重写getSessionId方式相关的知识,希望对你有一定的参考价值。
没设置时的情况,地址栏携带了JSESSIONID
了
1.设置DefaultSessionManager类的 setSessionIdUrlRewritingEnabled(false) 方法为false,它默认是true
2.重写getSessionId方法
添加如下代码
request.setAttribute(ShiroHttpServletRequest.SESSION_ID_URL_REWRITING_ENABLED, isSessionIdUrlRewritingEnabled());
完整代码
public class CustomSessionManager extends DefaultWebSessionManager
private static final String AUTHORIZATING = "token";
public CustomSessionManager()
super();
super.setSessionIdUrlRewritingEnabled(false);
@Override
protected Serializable getSessionId(ServletRequest request, ServletResponse response)
//拿到token
String sessionId = WebUtils.toHttp(request).getHeader(AUTHORIZATING);
//不为空则自己管控
if (sessionId != null)
request.setAttribute(ShiroHttpServletRequest.SESSION_ID_URL_REWRITING_ENABLED, isSessionIdUrlRewritingEnabled());
request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_SOURCE, "cookie");
request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID, sessionId);
request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_IS_VALID, Boolean.TRUE);
return sessionId;
else
//为空调用父类的
return super.getSessionId(request,response);
设置后,重定向时不带JSESSIONID
了
以上是关于SpringBoot整合Apache Shiro 重定向时去掉URL中的JSESSIONID--重写getSessionId方式的主要内容,如果未能解决你的问题,请参考以下文章
springboot学习笔记-5 springboot整合shiro