首页 > 其他 > 详细

shiro解决两个请求的sessionId相同,但是某一个传入sessionId之后找不到session的原因

时间:2020-03-12 21:11:27      阅读:131      评论:0      收藏:0      [点我收藏+]

 

那是因为传入的另一个对象 request对象的header里的jsessionid和另一个请求不同的原因,是因为另一个项目测试环境下放在同事的电脑上,我这个前端项目放在nginx下,所以不同,

测试将他的项目和我的项目都放入nginx下时,jsessionid相同,能够找到session了,工作正常。

 

public class ShiroUtils {

    public static String getUsername(String token, HttpServletRequest request, HttpServletResponse response) {
        String username = null;
        String sessionID = token;
        if (sessionID == null) {
            return "null";
        } else {
            SessionKey key = new WebSessionKey(sessionID, request, response);
            try {
                Session se = SecurityUtils.getSecurityManager().getSession(key);
//                解决因为session过期而导致的异常直接抛出到前端
                if (se == null) {
                    return "null";
                }
                Object obj = se.getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY);
                SimplePrincipalCollection coll = (SimplePrincipalCollection) obj;
                username = coll.getPrimaryPrincipal().toString();
            } catch (Exception e) {
//                e.printStackTrace();
                return "null";
            } finally {
            }
            return username;
        }
    }

}

 

shiro解决两个请求的sessionId相同,但是某一个传入sessionId之后找不到session的原因

原文:https://www.cnblogs.com/kinome/p/12482047.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!