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

配置自定义登录页后Spring Security出现ERR_TOO_MANY_REDIRECTS错误

解决Spring Boot + Spring Security自定义登录页重定向过多问题

问题根源

出现ERR_TOO_MANY_REDIRECTS的核心原因有两个:

  • 自定义登录页路径无控制器映射:配置了登录页为/loginPage,但没有对应控制器处理该请求,访问时被Spring Security判定未授权,又重定向回登录页,形成循环。
  • 用户角色配置错误:User.builder().roles()方法接受字符串类型角色名(如"ADMIN"),而非枚举对象集合,会导致角色解析异常,间接引发权限拦截逻辑异常。

修复步骤

1. 添加登录页控制器

创建控制器类,映射/loginPage请求返回登录视图:

@Controller
public class LoginController {

    @GetMapping("/loginPage")
    public String showLoginPage() {
        return "login"; // 对应Thymeleaf模板文件名(假设模板名为login.html)
    }
}

2. 修正SecurityConfig中的用户角色配置

将roles(Set.of(Role.ADMIN,Role.OWNER))改为传入枚举的字符串名称:

@Bean
public InMemoryUserDetailsManager userDetailsManager(PasswordEncoder passwordEncoder) {
   User user = User.builder()
            .username("Admin")
            .password(passwordEncoder.encode("password123"))
            .roles(Role.ADMIN.name(), Role.OWNER.name())
            .build();
    return new InMemoryUserDetailsManager(user);
}

3. 确认SecurityFilterChain配置

现有配置逻辑正确,确保/loginPage和/authenticateTheUser已开放匿名访问:

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    http
            .authorizeHttpRequests(configure -> configure
                    .requestMatchers("/loginPage", "/authenticateTheUser", "/resources/**").permitAll()
                    .anyRequest().authenticated())
            .formLogin(form -> form
                            .loginPage("/loginPage")
                            .loginProcessingUrl("/authenticateTheUser")
                            .defaultSuccessUrl("/", true)
                            .permitAll());
    return http.build();
}

验证修复

启动应用后,访问任意需授权页面,会自动跳转至/loginPage显示自定义登录页,输入正确用户名密码后可正常进入首页,重定向循环问题解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 07:22:45