メソッドの実行を特定のパラメーターで制限する必要があります。一部の売り手は、顧客 ID=1 の請求書を作成できますが、顧客 ID=2 の請求書を作成できません。春のセキュリティで実装することは可能ですか、それともビジネスロジックコードでチェックする必要がありますか?
1 に答える
6
ここには複数のオプションがあります。
- Spring Security ACLモジュールを使用して、セキュリティ制限のために実際のドメイン オブジェクトを考慮することができます。このような複数のセキュリティ ルールがある場合に適したオプションです。
このようなセキュリティ ルールが 1 つしかない場合、ACL モジュールを使用するのはやり過ぎかもしれません。この場合、ビジネス コードをチェックインすることをお勧めします。このコードを呼び出すには、次の 2 つのオプションがあります。
アノテーションを使用して宣言的に呼び出します。このチェックをより簡単に再利用できますが、発生した例外を制御できなくなります (デフォルトの AccessDeniedException になります)。
@PreAuthorize("hasRole('ROLE_AAA') and @billValidatorBean.validateForCustomer(#customerId)") public createBill(Integer customerId, ...) {
または、対応するメソッドに直接実装して、すべてを完全に制御できます。
状況に応じて方法を選択してください。
于 2013-09-12T14:12:10.237 に答える