Java 如何针对Spring表达式语言SpEL中的域对象集合进行身份验证

Java 如何针对Spring表达式语言SpEL中的域对象集合进行身份验证,java,spring-security,spring-el,Java,Spring Security,Spring El,我的原则是“foo”的一个实例,它有一个“bar”集合。每个“条”都有一个id,我希望该id与作为请求的资源传递的“id”匹配。在春天,我能做如下事情吗?如果是,怎么做 示例(psuedo语法;因为我不知道正确的方法,这就是我在这里的原因) 本质上与此相当 for(Transaction t : principal.transactions){ if(t.getId() == dto.getTransactionId()) return true; } return fa

我的原则是“foo”的一个实例,它有一个“bar”集合。每个“条”都有一个id,我希望该id与作为请求的资源传递的“id”匹配。在春天,我能做如下事情吗?如果是,怎么做

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

本质上与此相当

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

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

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

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

我不确定是否可以在普通SpEL中执行此操作。但您可以尝试一种解决方法:

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

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

此解决方案对我有效。看,这个解决方案对我有效。看见