JavaWeb項目中調用靜態方法獲取當前用戶信息

JavaWeb項目中調用靜態方法獲取當前用戶信息


用途
[1]簡化代碼
[2]簡化代碼
[3]簡化代碼
[4]將各種渠道的用戶信息獲取方式統一
思路
其實已經有框架實現這個功能,比如shiro,可以通過獲取Subject然後獲取Session,之後從session中獲取當前用戶
but!
如果這個用戶是從對外提供的接口處管理呢?如果這個對外提供的接口不需要使用用戶名密碼登錄呢?如果第三方開發不希望不斷的維持同一個sessionId,而是通過token的方式表明身份呢?
好吧,記錄一下思路
使用一個攔截器統一攔截所有請求,在攔截器中識別請求的用戶信息,將用戶信息放到ThreadLocal中,這樣在請求產生的線程中就可以通過ThreadLocal獲取當前的用戶信息.之後只需實現一個工具類,在工具類的靜態方法中從TheadLocal中獲取用戶信息就可以了
PS:
[1]注意ThreadLocal的清理,ThreadLocal的聲明週期和線程同.所以如果框架使用了線程池,線程不會被真正關閉 後續會出問題.記得在請求完畢後清理ThreadLocal.[至於時機… Filter本身就有兩個執行時機好吧.一個是執行前一個是執行後]
[2]因爲是思路了,具體的細節還要根據應用項目的實際情況踩坑.所以說的時候忽略了細節

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章