ThreadLocalはユーザー情報をグローバルに取得します

シナリオの要件:ログイン後、フロントエンドは私から返されたjwtを取得し、それを使用してログインステータスを維持し、情報を取得できます。その後、インターフェースが呼び出されると、さまざまな操作のために情報が私に渡されます。
しかし、さまざまな理由から、操作の実行中に、任意の方法で現在のユーザーの基本情報を簡単に取得する必要があります
値を渡すためにフロントエンドに純粋に依存する代わりに。
すべてのメソッドがjwtを取得できるわけではないため、パラメーターとしてリクエストヘッダーがない場合。
私はそれを実装する簡単な方法を想像しました。つまり、リクエストがjwtFilterを通過するときに、jwtを取得しながら、解析されたユーザー情報をThreadLocalに格納します。
ThreadLocalを使用すると、ユーザー呼び出しの過程で任意のメソッドのグローバルパラメーターとして使用でき、必要な情報をいつでも取得できます。

 

 

1.ログインに成功したら、ユーザー情報をredisキャッシュに保存します

擬似コードは次のとおりです

 @RequestMapping("/login")
    public Map<String,String> login(String name){
        Map<String,Object> result = new HashMap<>();
        result.put(ExecutionContext.USER_ID,name);
        result.put(ExecutionContext.USER_NAME,name);
        result.put(ExecutionContext.ACCESS_TOKEN,name);
        //存储用户信息到redis中 key值Token  value是用户信息
        RMap<String, String> map = redissonClient.getMap(name);

おすすめ

転載: blog.csdn.net/zsj777/article/details/95479583