系统接口权限拦截器,获取用户信息存储
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();