LoginContext.java
791 Bytes
package com.xly.erp.common.security;
/**
* 请求级登录上下文 — JwtHandlerInterceptor 在 preHandle 时 set,afterCompletion 时 clear。
* 用普通 ThreadLocal(不用 InheritableThreadLocal)避免子线程意外继承。
*/
public final class LoginContext {
private static final ThreadLocal<LoginUser> HOLDER = new ThreadLocal<>();
private LoginContext() {}
public static void set(LoginUser user) {
HOLDER.set(user);
}
public static LoginUser current() {
return HOLDER.get();
}
public static void clear() {
HOLDER.remove();
}
/** 当前登录用户上下文。userType 取值 NORMAL / SUPER_ADMIN。 */
public record LoginUser(Integer userId, String username, String userType, String companyCode) {}
}