クラス RoleHierarchyImpl

  • 実装されたすべてのインターフェース:
    RoleHierarchy

    public class RoleHierarchyImpl
    extends java.lang.Object
    implements RoleHierarchy

    このクラスは、さまざまなアクセスチェックコンポーネントで使用するロール階層を定義します。

    ロール階層の構成例を次に示します(ヒント: 「インクルード」として ">" 記号を参照してください)。

         <property name="hierarchy">
             <value>
                 ROLE_A > ROLE_B
                 ROLE_B > ROLE_AUTHENTICATED
                 ROLE_AUTHENTICATED > ROLE_UNAUTHENTICATED
             </value>
         </property>
     

    上記の説明:

    • 実際、ROLE_A を持つすべてのユーザーには、ROLE_B、ROLE_AUTHENTICATED、ROLE_UNAUTHENTICATED もあります。
    • ROLE_B を持つすべてのユーザーには、ROLE_AUTHENTICATED と ROLE_UNAUTHENTICATED もあります。
    • ROLE_AUTHENTICATED を持つすべてのユーザーには、ROLE_UNAUTHENTICATED もあります。

    階層的ロールは、アクセスルールを劇的に短縮します(また、アクセスルールをよりエレガントにします)。

    Spring Security の RoleVoter のこのアクセスルールを検討してください(背景: 認証されたすべてのユーザーがログアウトできる必要があります):

    /logout.html=ROLE_A,ROLE_B,ROLE_AUTHENTICATED
    階層的なロールにより、これを次のように短縮できます。
    /logout.html=ROLE_AUTHENTICATED
    短いルールに加えて、これによりアクセスルールが読みやすくなり、意図が明確になります。
    • コンストラクターのサマリー

      コンストラクター  
      コンストラクター 説明
      RoleHierarchyImpl()
    • メソッドのサマリー

      すべてのメソッド   インスタンスメソッド   具象メソッド  
      修飾子と型 メソッド 説明
      java.util.Collection<GrantedAuthority>getReachableGrantedAuthorities​(java.util.Collection<? extends GrantedAuthority> authorities)
      到達可能なすべての権限の配列を返します。
      voidsetHierarchy​(java.lang.String roleHierarchyStringRepresentation)
      ロール階層を設定し、すべてのロールについて、到達可能なすべてのロールのセットを事前に計算します。
      • クラス java.lang.Object から継承されたメソッド

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • コンストラクターの詳細

      • RoleHierarchyImpl

        public RoleHierarchyImpl()
    • メソッドの詳細

      • setHierarchy

        public void setHierarchy​(java.lang.String roleHierarchyStringRepresentation)
        ロールの階層を設定し、すべてのロールについて、到達可能なすべてのロールのセット、つまり、指定されたすべてのロールの階層の下位にあるすべてのロールを事前に計算します。事前計算はパフォーマンス上の理由で行われます(到達可能なロールは O(1) 時間で計算できます)。事前計算中に、ロール階層のサイクルが検出され、 CycleInRoleHierarchyException がスローされます。
        パラメーター:
        roleHierarchyStringRepresentation - - ロール階層の文字列定義。
      • getReachableGrantedAuthorities

        public java.util.Collection<GrantedAuthority> getReachableGrantedAuthorities​(java.util.Collection<? extends GrantedAuthority> authorities)
        インターフェースからコピーされた説明: RoleHierarchy
        到達可能なすべての権限の配列を返します。

        到達可能権限は、直接割り当てられた権限に加えて、ロール階層内でそれらから(推移的に)到達可能なすべての権限です。

        例:
        ロール階層: ROLE_A> ROLE_B> ROLE_C。
        直接割り当てられた権限: ROLE_A。
        到達可能な権限: ROLE_A、ROLE_B、ROLE_C。

        次で指定:
        インターフェース RoleHierarchygetReachableGrantedAuthorities 
        パラメーター:
        authorities - - 直接割り当てられた権限のリスト。
        戻り値:
        割り当てられた権限を指定されたすべての到達可能な権限のリスト。