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

Spring Security始终跳转默认登录页而非自定义登录页如何解决?

问题解决方法

你的自定义Spring Security配置未生效才会触发默认登录页,按以下顺序排查修复:

  • 检查Security配置类的基础注解与继承关系
    你的配置类必须添加@EnableWebSecurity注解,且继承WebSecurityConfigurerAdapter(Spring Security 5.7及以前版本),否则你重写的configure方法完全不会生效,直接走Spring Security默认配置。
    示例配置类头:
    @Configuration
    @EnableWebSecurity
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
        // 你的configure方法放在此处
    }
    
  • 修正权限匹配规则顺序错误
    你当前配置里的antMatchers("/**").permitAll()会匹配所有路径,导致后续anyRequest().authenticated()完全失效,直接删除"/**"这个匹配规则即可,可额外补充登录路径放行避免拦截:
    .antMatchers(
        "/js/**",
        "/css/**",
        "/img/**",
        "/webjars/**",
        "/login"
    ).permitAll()
    
  • 补全UserDetailsService实现关系
    你的UserServiceImpl实现的UserService接口,必须继承org.springframework.security.core.userdetails.UserDetailsService,否则Spring Security无法识别你自定义的用户校验逻辑,会 fallback 到默认配置。另外返回UserDetails时第三个权限参数不能传null,改为空列表即可:
    return new org.springframework.security.core.userdetails.User(
        user.getUserid(),
        user.getPassword(),
        AuthorityUtils.NO_AUTHORITIES
    );
    
  • 确认自定义登录页表单配置正确
    你的自定义login页面的表单提交地址必须是POST类型的/login,且用户名参数名默认为username,密码参数名默认为password,如果要自定义参数名/提交地址,需要在formLogin配置中补充:
    .formLogin()
    .loginPage("/login")
    .loginProcessingUrl("/custom/login") // 自定义表单提交地址
    .usernameParameter("userid") // 自定义用户名参数名
    .passwordParameter("pwd") // 自定义密码参数名
    .defaultSuccessUrl("/", true) // 登录成功后默认跳转首页
    .permitAll()
    
  • 检查包扫描范围
    确认你的Security配置类、Controller、Service都在Spring Boot主启动类的同级或子包下,否则配置不会被扫描加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:54:02