为什么Spring Boot Web安全配置后访问自定义登录页返回404错误
问题排查方案
- 配置类未被Spring扫描到(最高发原因)
Spring Boot 默认只会扫描启动类(标注@SpringBootApplication的类)所在的包以及所有子包下的组件。你的MvcConfig和WebSecurityConfig都放在config包下,如果启动类的包路径和config包平级,或者启动类没有放在包含config的上层包中,这两个配置类就不会生效:- 比如启动类放在
com.example.demo包下,把config包移到com.example.demo下即可; - 也可以手动在启动类上加
@ComponentScan(basePackages = "config")注解强制扫描配置类所在包。
- 比如启动类放在
- 登录视图文件位置错误
你引入了thymeleaf模板引擎,/login映射的视图名为login,对应的模板文件必须放在src/main/resources/templates/目录下,且命名为login.html:- 不要放在
static目录下(static目录放静态资源不会走模板解析); - 注意文件名大小写和后缀名是否正确,Windows环境对大小写不敏感,Linux/macOS环境大小写不匹配会直接返回404。
- 不要放在
- 方法签名缺失@Override注解(偶发)
你在MvcConfig类中实现WebMvcConfigurer接口的addViewControllers方法没有加@Override注解,虽然语法上没有问题,但如果JDK版本或者Spring版本兼容问题导致方法没有被正确重写,也会导致视图映射不生效,给方法加上@Override注解即可。 - 配置了上下文访问路径
如果你的application.properties或者application.yml中配置了server.servlet.context-path属性,访问登录页时需要加上对应的前缀,比如配置了server.servlet.context-path=/myapp,访问地址应为http://localhost:8080/myapp/login。
内容的提问来源于stack exchange,提问作者Ivan Aleksandrov
相关产品推荐
相关产品推荐

