设为首页
收藏本站
首页
自丢网
产品
软件开发产品
教程
联系
联系我们
热搜
活动
交友
discuz
登录
自丢网
»
教程
›
【教程】编程记录
›
JAVA教程
›
如何获得当前登录用户ID,如何传值到service,线程局部 ...
返回列表
发新帖
如何获得当前登录用户ID,如何传值到service,线程局部变量ThreadLocal解决
[复制链接]
admin
发表于 2025-9-13 18:09:15
|
显示全部楼层
|
阅读模式
如何获得当前登录用户ID,如何传值到service,线程局部变量ThreadLocal解决
====================
//
获取当前线程
ID
long threadId = Thread.
currentThread
().getId();
System.
out
.println("线程ID:" + threadId);
每次请求都是不一样的,单独的线程
==========================
1,创建工具类,如图所示
上个项目人员管理系统工具类代码也参考下:
package com.jinhei.utils;
public class CurrentHolder {
private static final ThreadLocal<Integer> CURRENT_LOCAL = new ThreadLocal<>();
public static void setCurrentId(Integer employeeId) {
CURRENT_LOCAL.set(employeeId);
}
public static Integer getCurrentId() {
return CURRENT_LOCAL.get();
}
public static void remove() {
CURRENT_LOCAL.remove();
}
}
复制代码
2,jwt令牌校验的拦截器中,存储当前用户ID
try {
log.info("jwt校验:{}", token);
Claims claims = JwtUtil.parseJWT(jwtProperties.getAdminSecretKey(), token);
Long empId = Long.valueOf(claims.get(JwtClaimsConstant.EMP_ID).toString());
log.info("当前员工id:", empId);
// 将当前登录用户的ID保存到当前线程的LocalThread中
BaseContext.setCurrentId(empId);
//3、通过,放行
return true;
} catch (Exception ex) {
//4、不通过,响应401状态码
response.setStatus(401);
return false;
}
复制代码
3,Service层使用
employee.setCreateUser(BaseContext.
getCurrentId
());
4,最后remove
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
//
请求处理完成后清理线程局部变量
BaseContext.
removeCurrentId
();
}
JWT令牌技术
https://www.zidiu.com/thread-45-1-1.html
springboot教程
,
java教程
相关帖子
•
java面向对象高级二(共3集)
•
java面向对象高级三完结(共3集)
•
lombok依赖
•
读取文本中的数据工具包hutool依赖
•
IOC详解Bean的声明以及DI详解,存在多个Bean解决方法
网站建设,公众号小程序开发,多商户单商户小程序制作,高端系统定制开发,App软件开发联系我们【手机/微信:
17817817816
】
回复
举报
返回列表
发新帖
微信扫码
Archiver
|
手机版
|
自丢网
网站建设,公众号小程序开发,商城小程序,系统定制开发,App软件开发等
粤ICP备2024252464号
在本版发帖
微信扫码
QQ客服
返回顶部
快速回复
返回顶部
返回列表