zoukankan      html  css  js  c++  java
  • shiro解决两个请求的sessionId相同,但是某一个传入sessionId之后找不到session的原因

    不同域下cookie中的jsessionId不同,这样的request对象传入后端,即使header传的sessionId(token)相同,也找不到session,所以遇到这种问题就要看jesessionId和sessionId(token)是否一致,以及是否在同一个域下。

    那是因为传入的另一个对象 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;
            }
        }
    
    }
  • 相关阅读:
    jquery 异步请求Demo【转载】
    jQuery Ajax 实例 ($.ajax、$.post、$.get)【转载】
    Tomcat内存溢出详解【转载】
    安装和运行(含虚拟机)
    搭博客遇到的坑
    H5易企秀
    兼容和Error捕获
    小程序常用代码
    微信小程序是什么
    wx地址和腾讯地图
  • 原文地址:https://www.cnblogs.com/kinome/p/12482047.html
Copyright © 2011-2022 走看看