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