解决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;
    }

}

猜你喜欢

转载自www.cnblogs.com/syscn/p/9660876.html