gpt4 book ai didi

java - 如何在集合中使用 Spring Security @Pre 和 @Post 注解

转载 作者:行者123 更新时间:2023-11-30 10:45:50 24 4
gpt4 key购买 nike

我们正在使用 Spring Security 的 ACL 注释来允许访问某些 Web 服务。 @PreAuthorize@PostAuthorize 似乎非常有用,并且支持我们现有的大多数用例。基于单个方法等的 SPEL 规则正在帮助我们实现应用程序及其服务的细粒度安全性。

例如:- 我们检查返回对象的所有者,如下所示

@PreAuthorize("hasRole('ROLE_ADMIN') and returnObject.owner == authentication.name")
public SomeDTO getSomeDTO(){ ... }

这在返回单个对象时工作正常。如果返回一个 List,等效的是什么?我们如何循环遍历集合并使用 SPEL 检查该集合中的各个元素属性?

最佳答案

如果是集合,您应该使用 @PreFilter@PostFilter 注释。

When using the @PostFilter annotation, Spring Security iterates through the returned collection and removes any elements for which the supplied expression is false. The name filterObject refers to the current object in the collection. You can also filter before the method call, using @PreFilter, though this is a less common requirement.

请参阅下面的示例或查找更多详细信息 here .

@PreAuthorize("hasRole('ROLE_ADMIN')")
@PostFilter("filterObject.owner == authentication.name")
public List<SomeDTO> getAll();

关于java - 如何在集合中使用 Spring Security @Pre 和 @Post 注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36836881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com