类 JwtSecurityContextBootstrap

java.lang.Object
com.elitesland.ystdms.sys.security.JwtSecurityContextBootstrap

@Component public class JwtSecurityContextBootstrap extends Object
在非 HTTP 线程(任务、监听、单元流程等)中,按登录账号签发 JWT,并初始化与 Web 请求相同的 SecurityContextHolder / SecurityContext,便于 CurrentUserContext.fromSecurityContext() 等行为一致。
  • 构造器详细资料

    • JwtSecurityContextBootstrap

      public JwtSecurityContextBootstrap(org.springframework.security.oauth2.jwt.JwtDecoder jwtDecoder, @Nullable JwtAuthClient jwtAuthClient, JwtAuthzConverter jwtAuthzConverter)
  • 方法详细资料

    • establishSecurityContextFromUsername

      @NonNull public String establishSecurityContextFromUsername(@NonNull String username)
      根据登录账号调用 JwtAuthClient.generateJwtByUsername(String),解码 JWT 并写入 SecurityContextHolder、SecurityContext,并加载本地 SysUser / SysEmployee(与 jwtContextFilter 一致)。
      参数:
      username - 登录账号
      返回:
      本次签发的 JWT 字符串
    • applyJwtToken

      public void applyJwtToken(@NonNull String bearerToken)
      使用已有 JWT 字符串初始化安全上下文(等价于请求头携带同一 Bearer Token 且解析成功后的状态)。
      参数:
      bearerToken - JWT 串(不含 Bearer 前缀)
    • runWithUsername

      public void runWithUsername(@NonNull String username, @NonNull Runnable action)
      establishSecurityContextFromUsername(String),执行回调,最后在 finally 中清理线程上下文。
    • clearSecurityContext

      public void clearSecurityContext()
      清理当前线程上的 Spring Security 与自定义 SecurityContext(与过滤器 finally 一致)。