用户信息必须由后端获取,不能通过前端传入的id是不可信的,,可能会出现越权的问题,,,怎么通过后端获取当前登录用户,,,
就需要将User 和 当前线程绑定在一起,,因为Servlet中的每一个请求,线程都是不同的,,,
在拦截器中,,拦截token,,将token中的用户信息,存入ThreadLocal中,,在拦截器执行过后的方法中清除ThreadLocal,防止内存泄露文章来源地址https://www.toymoban.com/news/detail-663504.html
public class LocalUser {
private static ThreadLocal<Map<String,Object>> threadLocal = new ThreadLocal<Map<String, Object>>();
public static void set(User user,Integer scope){
HashMap<String, Object> map = new HashMap<>();
map.put("user",user);
map.put("scope",scope);
LocalUser.threadLocal.set(map);
}
public static User getUser(){
Map<String, Object> map = LocalUser.threadLocal.get();
return (User) map.get("user");
}
public static Integer getScope(){
Map<String, Object> map = LocalUser.threadLocal.get();
return (Integer) map.get("scope");
}
public static void clear(){
LocalUser.threadLocal.remove();
}
}
文章来源:https://www.toymoban.com/news/detail-663504.html
到了这里,关于ThreadLocal存放当前用户的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!