ThreadLocal全域性獲取使用者資訊

2021-09-25 04:30:34 字數 699 閱讀 8882

場景需求 : 雖然在登入之後,前端可以獲取到我所返回的jwt,然後通過它保持登入狀態和獲取資訊。然後在呼叫介面的時候將資訊傳遞給我進行各種操作。

但是種種原因問題,我需要很簡便地在執行操作的過程中,在任何乙個方法中都能獲取到當前使用者的一些基本資訊。

而不純粹依賴前端傳值。

因為並非所有方法都可以拿到jwt,如果沒有請求頭作為引數的話。

我設想了一種簡便的實現方式,就是在請求通過jwtfilter的時候,獲取jwt的同時,把解析出來的使用者資訊儲存到threadlocal之中。

使用threadlocal的話,可以在使用者呼叫的過程中任何方法裡作為乙個全域性的引數,隨時得到想要的資訊。

1、登陸成功後把使用者資訊儲存到redis快取中

偽**如下

public maplogin(string name){

mapresult = new hashmap<>();

result.put(executioncontext.user_id,name);

result.put(executioncontext.user_name,name);

result.put(executioncontext.access_token,name);

//儲存使用者資訊到redis中 key值token value是使用者資訊

rmapmap = redissonclient.getmap(name);

獲取全域性Context

private static context context override public void oncreate public static context getcontext 如下 以上來自 第一行 context context是維持android程式中各元件能夠正常工作的乙個核心功能...

postman獲取全域性

1.獲取token介面時,在test裡面輸入如下語句 postman.clearglobalvariable token var jsondata json.parse responsebody postman.setglobalvariable token jsondata.token postm...

非同步執行緒threadLocal中物件獲取失敗

問題描述 在乙個比較複雜的業務中,同步執行了主任務,將與當前任務無關的任務丟進了非同步執行緒,然後發現非同步執行緒沒有獲取到使用者。所有的非同步任務都沒有執行下去。排查1.直接debug,發現任務在非同步方法開始執行就失敗了,沒有進入非同步方法 2.打log,非同步方法前的log列印了,之後的沒有。...