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与Shiro整合

SpringBoot整合Shiro

SpringBoot整合Shiro

springboot学习笔记-5 springboot整合shiro

springboot学习笔记-5 springboot整合shiro

springboot整合shiro