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

Spring Security注册后跳转激活页而非登录页的问题求助

问题分析与解决

核心问题:路径不匹配触发拦截

你的代码存在路径命名不一致的关键问题:

  • SecurityFilterChain中配置的可免授权访问路径是/activate-account(横杠分隔)
  • 但AuthController里注册提交后的重定向路径是/activate_account(下划线分隔),同时激活页面的GET请求映射是/activate-account

这就导致注册提交后重定向到/activate_account时,该路径不在Spring Security的permitAll白名单内,被auth.anyRequest().authenticated();规则拦截,触发跳转到登录页。

修复步骤

  1. 统一路径命名
    修改AuthController中的重定向语句,将下划线改为横杠,和Security配置保持一致:
@PostMapping("/register")
String registration(@ModelAttribute MyUser user) {
    userService.registerUser(user);
    return "redirect:/activate-account"; // 修正路径分隔符
}

同时确保Thymeleaf模板文件名对应改为activate-account.html,保证请求路径和模板名称匹配。

  1. 排查自动认证逻辑
    检查userService.registerUser(user)方法,确认没有在注册时自动通过SecurityContextHolder为用户设置认证信息。如果注册后用户被自动认证,Spring Security的默认跳转逻辑会干扰你的流程。

  2. 确认Security配置有效性
    当前你的SecurityFilterChain已经将/activate-account加入白名单,无需修改:

auth.requestMatchers(
    // ...其他路径
    antMatcher("/activate-account")
).permitAll();

验证

修改后重启项目,提交注册表单,即可正常跳转到PIN码输入页面,不会再被拦截跳转到登录页。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 01:44:55