Newer
Older
casic-metering-eqpt-xichang / casic-metering-common / src / main / java / com / casic / missiles / config / BizShiroSessionManager.java
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;
    }
}