解决shiro多次从redis读取session的问题

/**
 * 重写sessonManager
 * 解决shiro多次从redis读取session的问题
 */
public class CustomSessionManager extends DefaultWebSessionManager {
    @Override
    protected Session retrieveSession(SessionKey sessionKey) throws UnknownSessionException {
        Serializable sessionId = getSessionId(sessionKey);
        ServletRequest request = null;
        if(sessionKey instanceof WebSessionKey) {
            request = ((WebSessionKey) sessionKey).getServletRequest();
        }
        if(request!=null&& sessionId !=null) {
         Session session = (Session)request.getAttribute(sessionId.toString());
         if(session !=null && sessionId !=null) {
             return session;
         }
        }
        Session session = super.retrieveSession(sessionKey);
        if(request!=null && sessionId !=null) {
            request.setAttribute(sessionId.toString(), session);
        }
        return session;
    }

}

 

posted @ 2018-09-17 10:46  冬天不眠  阅读(2055)  评论(0编辑  收藏  举报