クラス RoleHierarchyImpl
java.lang.ObjectSE
org.springframework.security.access.hierarchicalroles.RoleHierarchyImpl
- 実装されているすべてのインターフェース:
- 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短いルールに加えて、これによりアクセスルールが読みやすくなり、意図が明確になります。
- ネストされたクラスの要約ネストされたクラス
- コンストラクターの概要コンストラクター
- メソッドのサマリー修飾子と型メソッド説明- static RoleHierarchyImpl- fromHierarchy- (StringSE hierarchy) 次のように、指定された定義を持つロール階層インスタンスを作成します。- getReachableGrantedAuthorities- (CollectionSE<? extends GrantedAuthority> authorities) 到達可能なすべての権限の配列を返します。- void- setHierarchy- (StringSE roleHierarchyStringRepresentation) 使用すべきではありません。代わりに- fromHierarchy(java.lang.String)を使用してください- static RoleHierarchyImpl.Builderデフォルトのロールプレフィックス "ROLE_" を持つ- RoleHierarchyImpl.Builderインスタンスを作成するファクトリメソッド- static RoleHierarchyImpl.Builder- withRolePrefix- (StringSE rolePrefix) 指定されたロールプレフィックスを持つ- RoleHierarchyImpl.Builderインスタンスを作成するファクトリメソッド。
- コンストラクターの詳細- RoleHierarchyImpl使用すべきではありません。代わりに- fromHierarchy(java.lang.String)を使用してください
 
- メソッドの詳細- fromHierarchy次のように、指定された定義を持つロール階層インスタンスを作成します。- ROLE_A > ROLE_B ROLE_B > ROLE_AUTHENTICATED ROLE_AUTHENTICATED > ROLE_UNAUTHENTICATED- パラメーター:
- hierarchy- 使用するロール階層
- 戻り値:
-  指定された hierarchyを使用するRoleHierarchyImpl
 
- withDefaultRolePrefixデフォルトのロールプレフィックス "ROLE_" を持つ- RoleHierarchyImpl.Builderインスタンスを作成するファクトリメソッド- 戻り値:
-  デフォルトのロールプレフィックス "ROLE_" を持つ RoleHierarchyImpl.Builderインスタンス
- 導入:
- 6.3
 
- withRolePrefix指定されたロールプレフィックスを持つ- RoleHierarchyImpl.Builderインスタンスを作成するファクトリメソッド。- パラメーター:
- rolePrefix- 階層内のロールに使用されるプレフィックス。
- 戻り値:
-  指定されたロールプレフィックスを持つ新しい RoleHierarchyImpl.Builderインスタンス
- 例外:
- IllegalArgumentExceptionSE- 提供されたロールプレフィックスが null の場合
- 導入:
- 6.3
 
- setHierarchy使用すべきではありません。代わりに- fromHierarchy(java.lang.String)を使用してくださいロールの階層を設定し、すべてのロールについて、到達可能なすべてのロールのセット、つまり、指定されたすべてのロールの階層の下位にあるすべてのロールを事前に計算します。事前計算はパフォーマンス上の理由で行われます(到達可能なロールは O(1) 時間で計算できます)。事前計算中に、ロール階層のサイクルが検出され、 CycleInRoleHierarchyException がスローされます。- パラメーター:
- roleHierarchyStringRepresentation- - ロール階層の文字列定義。
 
- getReachableGrantedAuthoritiespublic CollectionSE<GrantedAuthority> getReachableGrantedAuthorities- (CollectionSE<? extends GrantedAuthority> authorities) インターフェースからコピーされた説明:- RoleHierarchy到達可能なすべての権限の配列を返します。- 到達可能権限は、直接割り当てられた権限に加えて、ロール階層内でそれらから(推移的に)到達可能なすべての権限です。 - 例: 
 ロール階層: ROLE_A> ROLE_B> ROLE_C。
 直接割り当てられた権限: ROLE_A。
 到達可能な権限: ROLE_A、ROLE_B、ROLE_C。- 次で指定:
-  インターフェース RoleHierarchyのgetReachableGrantedAuthorities
- パラメーター:
- authorities- - 直接割り当てられた権限のリスト。
- 戻り値:
- 割り当てられた権限を指定されたすべての到達可能な権限のリスト。
 
 
fromHierarchy(java.lang.String)を使用してください