全局存储用户信息
可以尝试使用ThreadLocal替代Session的使用,当用户要访问需要授权的接口的时候,可以现在拦截器中将用户的Token存入ThreadLocal中;之后在本次访问中任何需要用户用户信息的都可以直接冲ThreadLocal中拿取数据。例如自定义获取用户信息的类AuthTonken :
public class AuthTonken {
private static final ThreadLocal<Map<String,String>> threadLocal = new ThreadLocal<>();
// 使用该方法Set用户token
public static void map(Map<String,String> map){
threadLocal.set(map);
}
// 将用户信息存入map
public static Map setToken(String userId){
Stirng Token = userService.get(userId);
Map<String,String> map = new HashMap<>();
map.put(userId, Token );
this.map(map);
}
// 根据键值获取对应的信息
public static String getToken(String userId){
Map<String,String> map = threadLocal.get();
String token = map.get(userId);
return token ;
}
// 用完清空ThreadLocal
public static void clear(){
threadLocal.remove();
}
}
注:比如多用户同时登录时,直接使用设置
AuthTonken.setToken(String userId);
使用以下方法获取
AuthTonken.getToken(String userId);
哎,又到了吐槽的时候了,道说有为何无为,无为之道本心。当你的领导独揽功劳时,我本心想“无为”,但看见他那么累,有狠下心“有为”了一下,结果:你是啥东西跟我抢功劳。。。。无语了