Spring Boot / Security - 自定义404页面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot / Security - 自定义404页面相关的知识,希望对你有一定的参考价值。

我在Spring Boot应用程序中创建了一个自定义404错误页面,我也使用了Spring Security,并且我有一个带有许多授权URL的身份验证入口点(该列表中包含错误页面)。

我发现如果我输入一个不存在的URL,身份验证入口点会拦截请求,因为它不是一个授权的URL,我最终回到我的登录页面而不是自定义404错误页面。有任何想法吗?

我在安全配置中的基本示例

http
    .csrf().disable()
        .authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/login"))
    .and()
        .authorizeRequests().antMatchers("/login", "/error-404")
答案

以下是当您调用/invalid-url时Spring Security将执行的操作

如果/invalid-url是安全的(默认)

  1. 存储请求(/invalid-url -> session
  2. 调用身份验证入口点
  3. 重定向到/登录
  4. 用户将进行身份验证
  5. 验证成功后,重定向到存储的请求/invalid-url
  6. 页面未找到 - 重定向到错误处理程序

如果/invalid-url不安全

  1. 页面未找到 - 重定向到错误处理程序

所以基本上,如果你想要第二个流程,你需要声明所有非安全URL,直接转到404页面

.mvcMatchers("/login", "/error-404/**", "/invalid-url/**").permitAll()

显然这样做:

.anyRequests().permitAll()

作为最后一个声明将解决您的用例,它也是危险的。然后,您已明确映射出必须保护的任何端点。如果你忘了一个,该端点将被暴露。

以上是关于Spring Boot / Security - 自定义404页面的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot Security

Understand Spring Security Architecture and implement Spring Boot Security

如何使用 Spring-Boot 播种 Spring-Security

Spring Boot整合Spring Security总结

Spring Boot:整合Spring Security

spring boot 整合spring security中spring security版本升级的遇到的坑