Spring 方法安全性 SpEL 注释在将 Spring-boot 升级到 3.2.2 后总是给出 401

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

从 spring-boot 3.2.1 升级到 3.2.2 时,以下 SPEL 安全注释停止工作。现在,它总是给出 401。显然,Spring 安全版本没有在两个版本之间升级。包含 ID 的注释有效,但使用对象的注释无效。

这个不起作用:

@PreAuthorize("hasPermission(#organization, 'WRITE')")
<S extends Organization>S save(S organization);

这个有效:

@PreAuthorize("hasPermission(#id, 'com.company.app.Organization', 'READ')")
Optional<Organization> findById(Long id);    

我什至在日志中没有看到任何可以帮助我识别问题的内容。它适用于 spring-boot 3.2.2 之前的所有版本

spring-boot spring-security spring-annotations spring-el
1个回答
0
投票

这被证明是 Spring-boot 3.2.2 / Spring Framework 6.1.3 中的一个错误

存储库方法上基于参数的缓存键在 6.1.2->6.1.3 之后无法解析

https://github.com/spring-projects/spring-boot/issues/39261 https://github.com/spring-projects/spring-framework/issues/32087

解决方案将于3.2.3发布

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