关于二级域名获取session的登陆用户问题的解决

有很多的网站下面挂着一些二级域名的子网站,在页面进行切换的时候,二级域名的网站往往获取不到后台存在session里的用户信息,此时我们可以通过cookie.setdomain(".demo.com")的方式实现了跨域共享cookie,再把存放用户的sessionid放在cookie中,以此来实现跨域。

如何根据sessionID获取session:https://blog.csdn.net/dennis19910627/article/details/45112615?locationNum=1&fps=1 

/**
  * 存cookie,可以把这段代码放在用户登陆时,把用户信息放在session之后
  */
//sessionid是存放用户信息的sessionid,请自行获取
HttpSession session = SpringUtil.getRequest().getSession(false); 
String sessionid = session.getId();   
Cookie JSESSIONID  = new Cookie("sessionid", sessionid);
JSESSIONID.setDomain(".demo.com");//一级域名
JSESSIONID.setPath("/yingyongmingcheng");//应用名称(项目名称)
response.addCookie(JSESSIONID);//HttpServletResponse response
        
//取cookie
Cookie[] cookies = SpringUtil.getRequest().getCookies();
            if(cookies!=null){
                for(Cookie cookie:cookies){
                    //此sessionid对应new Cookie时的key
                    if(cookie.getName().equals("sessionid")){
                        String sessionId = cookie.getValue();
                        MySessionContext myc= MySessionContext.getInstance();
                        HttpSession sess = myc.getSession(sessionId);
                         //Member 是用户实体类
                         //MemberINFO是用户信息存session时的key,可以设置一个静态常量
                        Member member = (Member)sess.getAttribute("MemberINFO");
                        
                    }
                }
            }

 

你可能感兴趣的:(cookie,java,session)