クラス 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 RoleHierarchyImplfromHierarchy(StringSE hierarchy) 次のように、指定された定義を持つロール階層インスタンスを作成します。getReachableGrantedAuthorities(CollectionSE<? extends GrantedAuthority> authorities) 到達可能なすべての権限の配列を返します。static RoleHierarchyImpl.Builderデフォルトのロールプレフィックス "ROLE_" を持つRoleHierarchyImpl.Builderインスタンスを作成するファクトリメソッドstatic RoleHierarchyImpl.BuilderwithRolePrefix(StringSE rolePrefix) 指定されたロールプレフィックスを持つRoleHierarchyImpl.Builderインスタンスを作成するファクトリメソッド。
メソッドの詳細
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
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- - 直接割り当てられた権限のリスト。- 戻り値:
- 割り当てられた権限を指定されたすべての到達可能な権限のリスト。