单点登陆的问题

来源: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回答

甲蛙

2020-06-30

ThreadLocal不能用来保存登录信息,你也写了,用来每个线程隔离信息。我登录完成后,登录这个线程就释放了,这个变量就没有了。

一般用在并发场景时,需要每个线程各自存一些临时数据,可以用到。

并且对分布式不适用。ThreadLocal只在本机本线程有效

1
3
蓝色西西
非常感谢!
2020-07-02
共3条回复

Spring Cloud+ Vue前后端分离开发企业级在线视频系统

全网稀缺课程 市场热门项目+主流框架 一课掌握前后端技术

1743 学习 · 1697 问题

查看课程