Class JwtSecurityContextBootstrap
java.lang.Object
com.elitesland.ystdms.sys.security.JwtSecurityContextBootstrap
在非 HTTP 线程(任务、监听、单元流程等)中,按登录账号或用户主键签发 JWT,并初始化与 Web 请求相同的
SecurityContextHolder / SecurityContext,便于 CurrentUserContext.fromSecurityContext() 等行为一致。
初始化后,OAuth2FeignRequestInterceptor 会从当前线程解析 Bearer 并写入下游
Authorization 头;对端经 optionalJwtAuthFilter / jwtContextFilter 解析后,
CurrentUserContext.fromSecurityContext() 与前端携带令牌访问一致。支持 HS256(external)与 RS256(internal)令牌。
-
Constructor Summary
ConstructorsConstructorDescriptionJwtSecurityContextBootstrap(org.springframework.security.oauth2.jwt.JwtDecoder jwtDecoder, @Nullable JwtAuthClient jwtAuthClient, JwtAuthzConverter jwtAuthzConverter) -
Method Summary
Modifier and TypeMethodDescriptionvoidapplyJwtToken(String bearerToken) 使用已有 JWT 字符串初始化安全上下文(等价于请求头携带同一 Bearer Token 且解析成功后的状态)。void清理当前线程上的 Spring Security 与自定义 SecurityContext(与过滤器 finally 一致)。@Nullable String返回当前线程可用于 Feign / HTTP 的 Bearer 串(不含前缀),与OAuth2FeignRequestInterceptor解析规则一致。根据用户主键调用JwtAuthClient.generateJwtByUserId(UUID),解码 JWT 并写入 SecurityContextHolder、SecurityContext,并加载本地 SysUser / SysEmployee(与jwtContextFilter一致)。establishSecurityContextFromUsername(String username) 根据登录账号调用JwtAuthClient.generateJwtByUsername(String),解码 JWT 并写入 SecurityContextHolder、SecurityContext,并加载本地 SysUser / SysEmployee(与jwtContextFilter一致)。voidrunWithUserId(UUID userId, Runnable action) 先establishSecurityContextFromUserId(UUID),执行回调,最后在 finally 中清理线程上下文。voidrunWithUsername(String username, Runnable action) 先establishSecurityContextFromUsername(String),执行回调,最后在 finally 中清理线程上下文。
-
Constructor Details
-
JwtSecurityContextBootstrap
public JwtSecurityContextBootstrap(org.springframework.security.oauth2.jwt.JwtDecoder jwtDecoder, @Nullable JwtAuthClient jwtAuthClient, JwtAuthzConverter jwtAuthzConverter)
-
-
Method Details
-
establishSecurityContextFromUsername
根据登录账号调用JwtAuthClient.generateJwtByUsername(String),解码 JWT 并写入 SecurityContextHolder、SecurityContext,并加载本地 SysUser / SysEmployee(与jwtContextFilter一致)。- Parameters:
username- 登录账号- Returns:
- 本次签发的 JWT 字符串
-
establishSecurityContextFromUserId
根据用户主键调用JwtAuthClient.generateJwtByUserId(UUID),解码 JWT 并写入 SecurityContextHolder、SecurityContext,并加载本地 SysUser / SysEmployee(与jwtContextFilter一致)。- Parameters:
userId- 用户主键- Returns:
- 本次签发的 JWT 字符串
-
applyJwtToken
使用已有 JWT 字符串初始化安全上下文(等价于请求头携带同一 Bearer Token 且解析成功后的状态)。- Parameters:
bearerToken- JWT 串(不含Bearer前缀)
-
currentBearerToken
返回当前线程可用于 Feign / HTTP 的 Bearer 串(不含前缀),与OAuth2FeignRequestInterceptor解析规则一致。 -
runWithUsername
先establishSecurityContextFromUsername(String),执行回调,最后在 finally 中清理线程上下文。 -
runWithUserId
先establishSecurityContextFromUserId(UUID),执行回调,最后在 finally 中清理线程上下文。 -
clearSecurityContext
public void clearSecurityContext()清理当前线程上的 Spring Security 与自定义 SecurityContext(与过滤器 finally 一致)。
-