获取到的sessionId 和request 为 null

来源:5-2 Shiro会话管理2

你是夏夜的萤火

2018-12-21 19:15

protected Session retrieveSession(SessionKey sessionKey) throws UnknownSessionException {
        Serializable sessionId = getSessionId(sessionKey);
        if(sessionId == null) {
            System.out.println("sessionId 为 null ");
        }
        ServletRequest request = null;
        if(sessionKey instanceof WebSessionKey) {
            
            request = ((WebSessionKey) sessionKey).getServletRequest();
        }
        
        if(request == null) {
            System.out.println("request 为 null");
        }

        if(request != null && sessionId != null) {
            Session session = (Session)request.getAttribute(sessionId.toString());
            if(session != null) {//在request中取
                System.out.println("从request中取...");
                return session;
            }
        }
        
        Session session = super.retrieveSession(sessionKey);//从redis中取
        if(request != null && sessionId != null) 
            request.setAttribute(sessionId.toString(), session);
        
        return session;
    }

因为sessionId 和request 为 null ,所以也就用不了request 去存取 session 。不知道什么原因?有人帮忙解决一下吗?

写回答 关注

1回答

  • 你是夏夜的萤火
    2018-12-21 20:59:24

    苦了我一天,找到问题所在了!!

    public class CustomSessionManager extends DefaultWebSessionManager

    自定义的 CustomSessionManager 要继承 DefaultWebSessionManager ,而不是 DefaultSessionManager ,难怪获得的 sessionId 和 request 为 null,给后来者一个告诫,不要像我一样了。

Shiro安全框架入门

从零入门Shiro安全框架

48040 学习 · 332 问题

查看课程

相似问题