无法通过sesssion获取登录用户信息时怎么办

  • Post author:
  • Post category:其他




思路

可知,同一个线程下的不同类可以共享TreadLocal这个线程局部变量,同时,在前端向后端发送的一个请求中,如果后端使用了多个类进行工作,那么这多个类都是在同一个线程中的,因此他们可以共享TreadLocal,于是便可以将登录用户信息存入TreadLocal,当无法获取session时便可以通过TreadLocal获取



步骤

1.编写一个利用TreadLocal存取信息的工具类

public class BaseContext {
    private static ThreadLocal<String> threadLocal = new ThreadLocal<>();

    public static void setUserId(Long id){
        threadLocal.set(id);
    }
I
    public static String getUserId(){
        return threadLocal.get();
    }
}

2.在登录过滤器中利用session获取用户登录信息

String id = request.getSession().getAttribute("user");

3.利用工具类存用户登录信息

BaseContext.setUserId(id);

4.之后只要是在同一线程中便可以通过以下代码共享userId了

BaseContext.getUserId();



版权声明:本文为qq_56815228原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。