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
是安全的(默认)
- 存储请求(
/invalid-url -> session
) - 调用身份验证入口点
- 重定向到/登录
- 用户将进行身份验证
- 验证成功后,重定向到存储的请求
/invalid-url
- 页面未找到 - 重定向到错误处理程序
如果/invalid-url
不安全
- 页面未找到 - 重定向到错误处理程序
所以基本上,如果你想要第二个流程,你需要声明所有非安全URL,直接转到404页面
.mvcMatchers("/login", "/error-404/**", "/invalid-url/**").permitAll()
显然这样做:
.anyRequests().permitAll()
作为最后一个声明将解决您的用例,它也是危险的。然后,您已明确映射出必须保护的任何端点。如果你忘了一个,该端点将被暴露。
以上是关于Spring Boot / Security - 自定义404页面的主要内容,如果未能解决你的问题,请参考以下文章
Understand Spring Security Architecture and implement Spring Boot Security
如何使用 Spring-Boot 播种 Spring-Security