集成shiro 啥情况下会session丢失
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集成shiro 啥情况下会session丢失相关的知识,希望对你有一定的参考价值。
参考技术A 技术分析:1、首先如果登录成功,Shiro的DefaultWebSessionManager会默认通过如下方式添加JSESSIONID Cookie到响应:
查看复制到剪贴板打印
private void storeSessionId(Serializable currentId, HttpServletRequest request, HttpServletResponse response)
if (currentId == null)
String msg = "sessionId cannot be null when persisting for subsequent requests.";
throw new IllegalArgumentException(msg);
Cookie template = getSessionIdCookie(); //此处得到JSESSIONID的一个cookie模板
Cookie cookie = new SimpleCookie(template);
String idString = currentId.toString();
cookie.setValue(idString);
cookie.saveTo(request, response);
log.trace("Set session ID cookie for session with id ", idString);
2、如果客户端访问时会带着个Cookie回来;但是注意:容器不认识的(Web容器并没有真正创建HttpSession);Shiro默认情况下会生成自己的一套Session,默认是MemorySessionDAO;即放到内存中的;和Web容器没有任何关系;
3、 接着访问一个错误的页面(如jsp);此时到了Shiro过滤器,过滤器通过;然后最后forward到这个错误页面;大家应该知道默认情况下jsp页面是需要session的;所以此时jsp会调用request.getSession() 此时创建了一个Session;这会往Cookie写JSESSIONID的;本回答被提问者和网友采纳
以上是关于集成shiro 啥情况下会session丢失的主要内容,如果未能解决你的问题,请参考以下文章
Java-Shiro:Shiro集成Redis实现Session统一管理
Java-Shiro:Shiro集成Redis实现Session统一管理
java web开发中的Thread.currentThread()啥情况下会改变啊?