クラス 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
- - ロール階層の文字列定義。
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
- - 直接割り当てられた権限のリスト。- 戻り値:
- 割り当てられた権限を指定されたすべての到達可能な権限のリスト。
fromHierarchy(java.lang.String)
を使用してください