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