1. ホーム
  2. spring-security

[解決済み] spring security 3 の @Secured と @PreAuthorize の違いは何ですか?

2022-04-26 17:11:13

質問

.NETと.NETのバネの安全性の違いは何なのか、私にはよくわかりません。

 @PreAuthorize("hasRole('ROLE_USER')")
 public void create(Contact contact)

そして

@Secured("ROLE_USER")
public void create(Contact contact)

PreAuthorizeがspring elで動作することは理解していますが、私のサンプルでは、実際に違いがあるのでしょうか?

どのように解決するのですか?

本当に違うのは @PreAuthorize が効く Spring Expression Language (SpEL) . できます。

  • のメソッドとプロパティにアクセスします。 SecurityExpressionRoot .
  • メソッドの引数にアクセスする(デバッグ情報付きコンパイル、またはカスタムが必要 ParameterNameDiscoverer ):

    @PreAuthorize("#contact.name == principal.name")
    public void doSomething(Contact contact)
    
    
  • (高度な機能) 独自のメソッドを追加 (オーバーライド) MethodSecurityExpressionHandler と設定します。 <global-method-security><expression-handler ... /></...> ).