我在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()
作为最后一个声明将解决您的用例,它也是危险的。然后,您已明确映射出必须保护的任何端点。如果你忘了一个,该端点将被暴露。