shiro 的subject 以及Context 對象的具體的含義。


shiro 他的本質就是一些列的dofilter 。在過濾的過程會創建subject 。

subjectContext 相當於內部維護了許多的map,然后維護用戶的各種信息。

doFilter----->SecurityManager---->subjectContext----->創建subject ,

然后通過解析,賦值,解析賦值,SecurityManager,Session,登陸信息最后通過。

通過這個邏輯突然有一點明白該代碼到底時干什么用的了。

 

 

ThreadContext的說明

ThreadContext類通過key/value 鍵值對為每一個線程提供綁定以及解綁對象的方法。

ThreadContext一共有四個對象

  1. 用來記錄日志的,
  2. 用來記錄SecurityManger 對象的key 
  3. 用來記錄subject_key 對向對應的key 
  4. 最后一個ThreadLocal 

通過着四行代碼,我們大概知道Threadcontext對象的最用了。ThreadCntext 實際上就是通過每個線程的ThreadLocalMap 來存儲自己的SecuritManager對象以及Subject .因為用到了ThreadLocal 。因此線程時安全的。

 

getResources方法

 該方法用於返回當前線程存儲在ThreadLocalMap中的HashMap對象,正常的話,這個hashMp對象中應該存放Security以及Suject兌現給的鍵值對。

setResources方法

可用於設置新的map對象放到Resources 也就是ThreadLoacal對象中去,

最后總結一張ThreadContext類和線程池的關系

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM