Spring Boot /安全性-自定义404页面

时间:2019-01-31 16:49:44

标签: spring-boot spring-security

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

我发现的是,如果输入的URL不存在,那么身份验证入口点将拦截该请求,因为它不是授权的URL,并且最终返回到我的登录页面,而不是自定义404错误页。有什么想法吗?

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

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

1 个答案:

答案 0 :(得分:1)

当您调用/invalid-url

时,Spring Security将执行以下操作

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

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

如果/invalid-url不安全

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

因此,基本上,如果需要第二个流程,则需要声明所有不安全的URL,直接转到404页

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

显然是这样做的:

.anyRequests().permitAll()

由于最后一条语句将解决您的用例,因此也是危险的。然后,您已明确映射出必须保护的所有端点。而且,如果您忘记了一个,该端点将被暴露。