【问题标题】:How to authenticate against a collection of domain objects in Spring Expression Language SpEL如何对 Spring Expression Language SpEL 中的域对象集合进行身份验证
【发布时间】:2013-01-18 19:21:41
【问题描述】:

我的原则是一个包含“bars”集合的“foo”实例。每个 'bar' 都有一个我想与作为请求的资源传递的 'id' 匹配的 id。我可以在 Spring SpEL 中执行以下操作吗?如果有,怎么做?

示例(伪语法;因为我不知道正确的方法,这就是我在这里的原因)

@PreAuthorize("principal.transactions.contains(instance where dto.transactionId == instance.id")")
public SomeResponse processTransaction(RequestDto dto) {
    ...
}

基本上相当于这个

for(Transaction t : principal.transactions){
    if(t.getId() == dto.getTransactionId())
        return true;
}
return false;

【问题讨论】:

    标签: java spring-security spring-el


    【解决方案1】:

    我不确定是否可以使用普通的 SpEL。但您可以尝试一种解决方法:

    @PreAuthorize("principal.hasTransactionId(#dto.transactionId)")
    

    然后您需要将 hasTransactionId(Integer transactionId) 方法添加到您的主体。此方法必须返回一个布尔值。

    【讨论】:

    猜你喜欢
    • 2013-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 2017-05-18
    • 2019-11-22
    • 1970-01-01
    相关资源
    最近更新 更多