クラス AuthorizationAdvisorProxyFactory

java.lang.ObjectSE
org.springframework.security.authorization.method.AuthorizationAdvisorProxyFactory
実装されたすべてのインターフェース:
IterableSE<AuthorizationAdvisor>AuthorizationProxyFactory

public final class AuthorizationAdvisorProxyFactory extends ObjectSE implements AuthorizationProxyFactory, IterableSE<AuthorizationAdvisor>
任意のオブジェクトに認可アドバイスを適用するためのプロキシファクトリ。

例: Spring で管理されていないオブジェクト Foo を考えてみましょう。

     class Foo {
         @PreAuthorize("hasAuthority('bar:read')")
         String bar() { ... }
     }
 
次のように、AuthorizationAdvisorProxyFactory を使用して、インスタンスを Spring SecurityPreAuthorize メソッドインターセプターにラップします。
     AuthorizationProxyFactory proxyFactory = AuthorizationAdvisorProxyFactory.withDefaults();
     Foo foo = new Foo();
     foo.bar(); // passes
     Foo securedFoo = proxyFactory.proxy(foo);
     securedFoo.bar(); // access denied!
 
導入:
6.3
  • メソッドの詳細

    • withDefaults

      public static AuthorizationAdvisorProxyFactory withDefaults()
      Spring Security の事前リアクティブメソッドセキュリティサポートでオブジェクトをラップするために必要なデフォルトを使用して AuthorizationAdvisorProxyFactory を構築します。
      戻り値:
      事前リアクティブメソッドセキュリティサポートを追加するための AuthorizationAdvisorProxyFactory
    • withReactiveDefaults

      public static AuthorizationAdvisorProxyFactory withReactiveDefaults()
      Spring Security の事前リアクティブリアクティブメソッドセキュリティサポートでオブジェクトをラップするために必要なデフォルトを使用して AuthorizationAdvisorProxyFactory を構築します。
      戻り値:
      事前リアクティブリアクティブメソッドセキュリティサポートを追加するための AuthorizationAdvisorProxyFactory
    • proxy

      public ObjectSE proxy(ObjectSE target)
      認可アドバイスを実施するためにオブジェクトをプロキシします。

      非最終クラスまたは複数のインターフェースを実装するクラスのインスタンスをプロキシします。

      target が IteratorSECollectionSEArraySEMapSEStreamSE、または OptionalSE の場合、要素または値の型はプロキシされます。

      target が ClassSE の場合、代わりに ProxyFactory.getProxyClass(java.lang.ClassLoader) が呼び出されます。

      次で指定:
      インターフェース AuthorizationProxyFactoryproxy 
      パラメーター:
      target - プロキシするインスタンス
      戻り値:
      プロキシインスタンス
    • setAdvisors

      public void setAdvisors(AuthorizationAdvisor... advisors)
      作成された各プロキシに含める必要があるアドバイザーを追加します。

      すべてのアドバイザーはアドバイザーの順序で再ソートされます。

      パラメーター:
      advisors - アドバイザーを追加する
    • setAdvisors

      public void setAdvisors(CollectionSE<AuthorizationAdvisor> advisors)
      作成された各プロキシに含める必要があるアドバイザーを追加します。

      すべてのアドバイザーはアドバイザーの順序で再ソートされます。

      パラメーター:
      advisors - アドバイザーを追加する
    • setTargetVisitor

      public void setTargetVisitor(AuthorizationAdvisorProxyFactory.TargetVisitor visitor)
      このビジターを使用して、プロキシターゲットの階層を移動します。

      これは、型または型のセットに対して特殊な動作が必要な場合に役立ちます。例: このファクトリでプリミティブとラッパーをスキップする場合は、次のようにします。

              AuthorizationAdvisorProxyFactory proxyFactory = new AuthorizationAdvisorProxyFactory();
              proxyFactory.setTargetVisitor(TargetVisitor.defaultsSkipValueTypes());
       

      デフォルトの AuthorizationAdvisorProxyFactory.TargetVisitor は、ClassSE インスタンスだけでなく、リアクティブ型 (リアクターが存在する場合)、コレクション型、OptionalSESupplierSE などの他のコンテナー型に含まれるインスタンスもプロキシします。

      別のコンテナー型のサポートを追加する場合は、次の方法で実行できます。

              TargetVisitor functions = (factory, target) -> {
                      if (target instanceof Function function) {
                              return (input) -> factory.proxy(function.apply(input));
                      }
                      return null;
              };
              AuthorizationAdvisorProxyFactory proxyFactory = new AuthorizationAdvisorProxyFactory();
              proxyFactory.setTargetVisitor(TargetVisitor.of(functions, TargetVisitor.defaultsSkipValueTypes()));
       
      パラメーター:
      visitor - 特定の型の特別な動作を導入するために使用するビジター
      関連事項:
    • iterator

      @NonNull public IteratorSE<AuthorizationAdvisor> iterator()
      次で指定:
      インターフェース IterableSE<AuthorizationAdvisor>iterator