单点登陆的问题
来源:11-6 单点登录功能开发

蓝色西西
2020-06-29
用ThreadLocal支持分布式单点登陆吗?ThreadLocal比redis好吗。
//使用ThreadLocal,可以隔离每个线程的数据,为每一个线程创建数据副本,各个用户的数据不会混乱
private static ThreadLocal<Map<String,Object>> threadLocal = new ThreadLocal<>();
//设置user值
public static void set(User user,Integer scope){
// LocalUser.user = user;
Map<String,Object> map = new HashMap<>();
map.put("user",user);
map.put("scope",scope);
//把包含用户信息和权限的HashMap,保存到threadLocal中
LocalUser.threadLocal.set(map);
}
写回答
1回答
-
ThreadLocal不能用来保存登录信息,你也写了,用来每个线程隔离信息。我登录完成后,登录这个线程就释放了,这个变量就没有了。
一般用在并发场景时,需要每个线程各自存一些临时数据,可以用到。
并且对分布式不适用。ThreadLocal只在本机本线程有效
132020-07-02
相似问题