You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring如何允许同一用户在运行期间完成多次认证?

解决Spring无状态JWT认证下重复登录失败的问题

问题根源分析

你的配置里存在两处和无状态JWT认证冲突的设置:

  1. .rememberMe():在SessionCreationPolicy.STATELESS模式下,记住我机制完全不生效,反而会引入不必要的会话相关逻辑,干扰认证流程。
  2. .logout()相关配置:无状态认证中服务端不维护会话,删除JSESSIONID Cookie毫无意义,这个配置属于冗余项。

修正后的SecurityFilterChain配置

先清理冲突配置,调整后的代码如下:

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    http
        .csrf().disable()
        .authorizeHttpRequests(auth -> auth
            .requestMatchers("/**/auth/**").permitAll()
            .anyRequest().authenticated()
        )
        .sessionManagement(session -> session
            .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
        )
        .authenticationProvider(authenticationProvider())
        .addFilterBefore(jwtAuthFilter, UsernamePasswordAuthenticationFilter.class);
    return http.build();
}

额外排查点

  1. 认证接口逻辑检查:确保/**/auth/**接口没有限制同一用户的登录次数,只要用户名密码正确,每次请求都能生成新的JWT Token。如果你的代码里有“同一用户仅保留一个有效Token”的逻辑(比如将Token存入数据库并覆盖旧值),需要取消这个限制,或者在脚本运行前主动失效旧Token。
  2. Python脚本请求检查:确认每次运行脚本时,都是重新发起认证请求,没有复用之前的无效Token或残留Cookie。检查请求头是否正确携带认证参数,响应的Token是否被正确提取并用于后续请求。

内容的提问来源于stack exchange,提问作者rattulus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 21:25:24