2013-01-18 16 views
1

我的原則是'foo'的一個實例,它有一個'bars'集合。每個'酒吧'都有一個id,我想與作爲資源請求傳遞的'id'匹配。我可以在Spring SpEL中執行下列操作嗎?如果是這樣,怎麼樣?如何使用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; 

回答

1

相當於我不知道它可以在普通的SpEL中完成。但是你可以嘗試一種解決方法:

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

然後你需要添加hasTransactionId(整數的transactionId)方法來你的本金。該方法必須返回一個布爾值。

+0

這個解決方案對我有用。請參閱[此問題](http://stackoverflow.com/a/15416652/1242531)。 – Spacemonkey

相關問題