• 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后所有的配置是正常可以使用的。

  • 相关阅读:
    web前端-javascript-function函数(函数说明,创建和调用函数,其他方法函数声明创建函数、函数表达式创建函数)
    Games101-Chapter14-Ray Tracing 2
    2023腾讯云标准型S5云服务器简单测评,比较值!
    (免费分享)基于jsp的CRM客户管理-带论文
    【JavaScript】Date对象(创建时间对象、常用Date方法总结)
    零基础入门JavaWeb——CSS相关知识
    Word文档格式设置——小课堂
    动态规划问题(一)
    JAVA应用中线程池设置多少合适?
    Kafka topic分区增加副本
  • 原文地址:https://blog.csdn.net/hhl18730252820/article/details/126811387