Spring Security + JWT
一、整体架构
Client → /login → 颁发 access + refresh
Client → 业务接口(带 access)→ 网关解析 → 业务
Client → /token/refresh(带 refresh)→ 颁发新 access
二、过滤器链
@Bean
SecurityFilterChain chain(HttpSecurity http) throws Exception {
return http
.csrf(c -> c.disable())
.sessionManagement(s -> s.sessionCreationPolicy(STATELESS))
.authorizeHttpRequests(a -> a
.requestMatchers("/auth/**").permitAll()
.anyRequest().authenticated())
.addFilterBefore(jwtFilter, UsernamePasswordAuthenticationFilter.class)
.build();
}
三、单设备登录
Redis 存 user:token:{uid} → 当前 access 的 jti,新登录覆盖旧值;JwtFilter 校验 jti 一致性。
四、踢人、强制下线
后台接口删除 user:token:{uid} 即可,下次请求自然失败。