1

私の原則は、「バー」のコレクションを持つ「foo」のインスタンスです。各「バー」には、要求されたリソースとして渡された「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;
4

1 に答える 1

1

プレーンSpELでできるかどうかはわかりません。ただし、回避策を試すことができます。

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

次に、 hasTransactionId(Integer transactionId)メソッドをプリンシパルに追加する必要があります。このメソッドはブール値を返す必要があります。

于 2013-01-18T20:40:59.953 に答える