クラス 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短いルールに加えて、これによりアクセスルールが読みやすくなり、意図が明確になります。
コンストラクターのサマリー
コンストラクターメソッドのサマリー
修飾子と型メソッド説明getReachableGrantedAuthorities
(CollectionSE<? extends GrantedAuthority> authorities) 到達可能なすべての権限の配列を返します。void
setHierarchy
(StringSE roleHierarchyStringRepresentation) ロール階層を設定し、すべてのロールについて、到達可能なすべてのロールのセットを事前に計算します。
コンストラクターの詳細
RoleHierarchyImpl
public RoleHierarchyImpl()
メソッドの詳細
setHierarchy
ロールの階層を設定し、すべてのロールについて、到達可能なすべてのロールのセット、つまり、指定されたすべてのロールの階層の下位にあるすべてのロールを事前に計算します。事前計算はパフォーマンス上の理由で行われます(到達可能なロールは O(1) 時間で計算できます)。事前計算中に、ロール階層のサイクルが検出され、 CycleInRoleHierarchyException がスローされます。- パラメーター:
roleHierarchyStringRepresentation
- - ロール階層の文字列定義。
getReachableGrantedAuthorities
public 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
- - 直接割り当てられた権限のリスト。- 戻り値:
- 割り当てられた権限を指定されたすべての到達可能な権限のリスト。