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

Spring Security配置引发无限重定向错误,如何解决?

解决Spring Boot Security无限重定向到/login的问题

问题原因

当前配置存在两个核心问题:

  • authorizeHttpRequests中设置anyRequest().authenticated(),要求所有请求必须认证,但自定义登录页路径/login也被纳入拦截范围,导致访问/login时被强制重定向到登录页,形成无限循环。
  • CustomUserDetailsService手动实例化BCryptPasswordEncoder,而容器中已通过CustomSecurityConfig的passwordEncoder() Bean提供了加密器,冗余实例化可能导致加密逻辑不一致。

修改方案

1. 调整SecurityFilterChain配置,放行登录页

修改filterChain方法,明确允许/login路径匿名访问:

@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {

    log.info("-----------------configuration---------------------");

    http
            .authorizeHttpRequests(authorize -> {
                authorize
                        .requestMatchers("/login").permitAll() // 放行登录页请求
                        .anyRequest().authenticated();
            })
            .formLogin(formLogin -> {
                formLogin
                        .loginPage("/login")
                        .permitAll();
            });

    return http.build();
}

2. 统一使用容器中的PasswordEncoder

修改CustomUserDetailsService,通过构造器注入容器中的加密器,删除手动实例化逻辑:

@Log4j2
@Service
@RequiredArgsConstructor
public class CustomUserDetailsService implements UserDetailsService {

    private final PasswordEncoder passwordEncoder; // 注入容器内的加密器Bean

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {

        log.info("loadUserByUsername: " + username);

        UserDetails userDetails = User.builder()
                .username("user1")
                .password(passwordEncoder.encode("1111"))
                .authorities("ROLE_USER")
                .build();

        return userDetails;
    }
}

3. 确保存在/login路径的控制器

需要编写控制器处理/login请求,返回登录页面(以Thymeleaf为例):

@Controller
public class LoginController {

    @GetMapping("/login")
    public String loginPage() {
        return "login"; // 对应resources/templates/login.html模板文件
    }
}

效果说明

修改后,访问/login时会被允许匿名访问,不再触发拦截重定向,可正常显示登录页面;同时统一使用容器内的加密器,保证密码加密逻辑一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 21:41:19