shiro中出现不同请求session不同的现象


Shiro提供了三个默认实现:

DefaultSessionManager:DefaultSecurityManager使用的默认实现,用于JavaSE环境;

ServletContainerSessionManager:DefaultWebSecurityManager使用的默认实现,用于Web环境,其直接使用Servlet容器的会话;

DefaultWebSessionManager:用于Web环境的实现,可以替代ServletContainerSessionManager,自己维护着会话,直接废弃了Servlet容器的会话管理。

参考地址:https://blog.csdn.net/baicp3/article/details/45840645

 

遇到的坑:

在web环境下用ini文件配置shiro时,如果不指定SecurityManager时,shiro会默认创建DefaultSecurityManager对象,这样会导致在web环境下,发不同的请求生成的session不同,导致登录功能失效。因为DefaultSessionManager在源码中是和本地线程绑定的,而web环境中一个请求会创建一个线程,从而导致session都不同。

当使用DefaultWebSessionManager时,shiro中的session和web中的session是一致的。而DefaultSessionManager的session和web中的session是不一致的。

 

遇到的一个异常:

https://www.cnblogs.com/ningheshutong/p/6478080.html

问题原因:没有配置过滤器。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM