package com.xly.erp.common.security; /** * 请求级登录上下文 — JwtHandlerInterceptor 在 preHandle 时 set,afterCompletion 时 clear。 * 用普通 ThreadLocal(不用 InheritableThreadLocal)避免子线程意外继承。 */ public final class LoginContext { private static final ThreadLocal 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) {} }