Spring Boot / Security - 自定义404页面

问题描述 投票:0回答:1

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

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

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

http
    .csrf().disable()
        .authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/login"))
    .and()
        .authorizeRequests().antMatchers("/login", "/error-404")
spring-boot spring-security
1个回答
1
投票

以下是当您调用/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()

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

© www.soinside.com 2019 - 2024. All rights reserved.