SpringSecurity 5.7.3中使用withObjectPostProcessor遇到的配置无效问题

简介

项目中使用了SpringBoot 2.7.4的版本,然后对应的Spring Security 是5.7.3 的版本,在使用Spring Security 过程中有一定的变化。
首先就是配置的方式,之前我们会继承WebSecurityConfigurerAdapter,而在新版中是直接以接口的形式声明配置,其余的配置大同小异,当然增加了很多新的方法,但是也可以使用以前熟悉的配置方式。
这里主要说一下我在使用withObjectPostProcessor时由于手残遇到的问题,将配置时http.authorizeRequests()写为了http.authorizeHttpRequest(),由于它们代码提示中可以配置的方法基本都一样导致我一直没发现,最后重新敲配置文件时才看到了这里的差异,随后就去官网中查找了它们的差异,具体差异大家可以查看官方的【原文介绍】。我这里大体的说一下,总的来说authorizeHttpRequest是官方在未来版本中将要主要推荐的配置方式。它对authorizeRequests对改进有一下几点:

  • 使用简化的 AuthorizationManager API,而不是元数据源、配置属性、决策管理器和选民。这简化了重用和定制(目前为止我还是喜欢之前的配置方式,可能是熟悉以前的吧,后续研究明白了再换)
  • 延迟身份验证查找。而不是需要为每个请求查找身份验证,它只会在授权决策需要身份验证的请求中查找它。(这点还是比较好的,有时候在应用中并不是每个请求都需要进行验证)
  • 基于 Bean 的配置支持。
    当使用 authorizeHttpRequests 代替 authorizeRequests 时,则使用 AuthorizationFilter 代替 FilterSecurityInterceptor。
    authorizeHttpRequests

踩坑提醒

如果你使用了authorizeHttpRequests,那么使用withObjectPostProcessor去配置我们自定义的元数据源和权限决策配置时是无效的,因为不会进去,很好奇为什么既然这个用起来有这么大的坑,官方还给它留了这个方法,可能是我不会用吧,但是我改成authorizeHttpRequests后所有的配置是正常可以使用的。

猜你喜欢

转载自blog.csdn.net/hhl18730252820/article/details/126811387