当前位置: 首页 > news >正文

系统接口权限拦截器,获取用户信息存储

UserInfo 类

这是一个表示用户信息的 Java 类,使用了 Lombok 注解来简化代码编写。

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;import java.io.Serializable;
import java.util.List;@Data
@ToString
@EqualsAndHashCode
public class UserInfo implements Serializable {private static final long serialVersionUID = -6839594295658816667L;private Long pk;private String userId;private String firstName;private String lastName;private String gender;private String nickName;private Integer location;private String employeeNo;private String idType;private String idNo;private String email;private String telephone;private String mobile;private String creditCard;private String cardHolder;private Integer notificationScheme;private Long hireTime;private Integer userType;private Integer userStatus;private Long syncTime;private Integer ver;private List<String> jobIds;private String loginCompanyCode;private String companyCode;}

UserInfoContext 类

这是一个用于存储用户信息的全局上下文类,利用 ThreadLocal 实现每个线程独立的用户信息存储。

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.apache.commons.lang3.ObjectUtils;import java.io.Serializable;/*** @Description: 全局存储用户信息上下文* @Author: [Your Name]* @Date: [Date]*/
@Data
@ToString
@EqualsAndHashCode
public class UserInfoContext implements Serializable {private static final long serialVersionUID = -2398463915852640203L;private final static ThreadLocal<UserInfo> local = new ThreadLocal<>();/*** 设置用户信息** @param userInfo 用户信息对象*/public static void setUser(UserInfo userInfo){local.set(userInfo);}/*** 获取用户信息** @return 用户信息对象*/public static UserInfo getUserInfo(){return local.get();}/*** 清除用户信息*/public static void clean(){if (ObjectUtils.isNotEmpty(local.get())) {local.remove();}}
}

拦截器验证成功存储用户信息

在拦截器中,可以通过以下代码验证用户并存储用户信息:

UserInfoContext.setUser(userInfo);

业务层使用用户信息

在业务层,可以通过以下代码获取存储的用户信息:

UserInfo userInfo = UserInfoContext.getUserInfo();
http://www.lryc.cn/news/471450.html

相关文章:

  • Chromium HTML5 新的 Input 类型color 对应c++
  • 问:SQL中的通用函数及用法?
  • .NET Core WebApi第6讲:WebApi的前端怎么派人去拿数据?(区别MVC)
  • Chromium HTML5 新的 Input 类型date 对应c++
  • ZooKeeper的应用场景:深入探讨分布式系统中的多样化应用
  • 【Vue3】第四篇
  • Chromium HTML5 新的 Input 类型tel对应c++
  • JVM—类加载器、双亲委派机制
  • 笔试题 求空格分割的英文句子中,最大单词长度。
  • 【笔记】大模型长度外推技术 NTK-Aware Scaled RoPE
  • 前端 eslint 配置,以及在git提交之前自动format
  • 2024.10.9华为留学生笔试题解
  • 利用ADPF性能提示优化Android应用体验
  • 论文阅读 - Pre-trained Online Contrastive Learning for Insurance Fraud Detection
  • 【最全基础知识2】机器视觉系统硬件组成之工业相机镜头篇--51camera
  • 虚拟机WIN7安装PADS VX24 出现脚本故障 IPW213
  • Java正则表达式详解万字笔记内容丰富
  • 文件属性与目录
  • 5G 基站SCTP
  • MFC的SendMessage与PostMessage的区别
  • 学习虚幻C++开发日志——基础案例(持续更新中)
  • 【CUDA代码实践03】m维网格n维线程块对二维矩阵的索引
  • VSCode Qt6安装OpenSSL
  • JAVA学习-练习试用Java实现“定义一个用户类,包含用户名和密码”
  • 大数据之VIP(Virtual IP,虚拟IP)负载均衡
  • 鸿蒙网络编程系列38-Web组件文件下载示例
  • Cisco Packet Tracer 8.0 路由器的基本配置和Telnet设置
  • Flink系列之:学习理解通过状态快照实现容错
  • Linux 读者写者模型
  • JavaScript 的 axios 实现文件下载功能