shiro的cookie去掉domain后导致用户无法登陆
5月30号在测试app端hjdang的登陆时把shiro sessionManager中的下面这句注释掉了。结果有两个人说现在前端无法登陆。赶紧恢复代码,但发现在我的电脑上edge浏览器可以登陆,但chrome无法登陆。
cookie.setDomain("hjdang.com");
@Bean public DefaultWebSessionManager sessionManager() { DefaultWebSessionManager sessionManager = new DefaultWebSessionManager(); Cookie cookie = sessionManager.getSessionIdCookie(); cookie.setName("Hjdang"); // cookie.setDomain("hjdang.com"); log.info("shiro cookie is {}", JsonUtil.toJSONString(cookie)); sessionManager.setSessionIdCookie(cookie); sessionManager.setSessionDAO(redisSessionDAO()); sessionManager.setGlobalSessionTimeout(24 * 60 * 60 * 1000); return sessionManager; }
仔细看了请求,发现islogin这个js方法的请求带的名为 “Hjdang” 的cookie有两个,domain分别为.hjdang.com和web.hjdang.com. 我想是不是后端根据cookie来取session时可能用了web.hjdang.com的,导致找不到session。于是chrome中清除历史的cookie。现在名为 “Hjdang” 的cookie只有一个了,domain分别为.hjdang.com。果然又可以登陆了。
喜欢艺术的码农

浙公网安备 33010602011771号