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

  • 相关阅读:
    SDN落地场景
    CSDN推出【云IDE】,几秒完成开发环境配置,今后可以在浏览器里使用VS Code了
    文件上传很难搞?10分钟带你学会阿里云OSS对象存储
    git在merge时做了些什么
    产品设计实战(上):Axure9绘制高保真原型
    微信支付项目实战、创建订单到支付退款代码详解
    JavaScript中的包装类型详解
    MyBatisPlus
    是什么让 NFT 项目成为“蓝筹”?
    SSM+智慧养老服务平台 毕业设计-附源码211709
  • 原文地址:https://blog.csdn.net/hhl18730252820/article/details/126811387