package com.casic.missiles.config; import com.casic.missiles.core.shiro.ShiroSessionManager; import org.apache.shiro.session.Session; import org.apache.shiro.session.UnknownSessionException; import org.apache.shiro.session.mgt.SessionKey; import org.apache.shiro.web.session.mgt.WebSessionKey; import javax.servlet.ServletRequest; import java.io.Serializable; public class BizShiroSessionManager extends ShiroSessionManager { @Override protected Session retrieveSession(SessionKey sessionKey) throws UnknownSessionException { Serializable sessionId = this.getSessionId(sessionKey); ServletRequest request = null; if(sessionKey instanceof WebSessionKey){ request = ((WebSessionKey)sessionKey).getServletRequest(); } if(request!=null && null!=sessionId){ Object sessionObj = request.getAttribute(sessionId.toString()); if(sessionObj != null){ return (Session) sessionObj; } } Session session = super.retrieveSession(sessionKey); if(request!=null && null!=sessionId){ request.setAttribute(sessionId.toString(),session); } return session; } }