私はとして当局の名前を持つが含まれています。 .. ")では、hasAnyAuthority( 'ROLE_ADMIN'、 'ROLE_ADMIN_L1'、 'ROLE_ADMIN_L2'、 'ROLE_ADMIN_L3'、...)のすべての名前をリストするのではなく、SPELを使用して権限名に" ROLE_ADMIN " ?春のセキュリティ事前認証SPELは "ROLE_ADMIN"
0
A
答えて
0
を使用しています。
SPELがプリンシパルを取得できるため、解決策はprincipal.authoritiesのすべての権限をチェックし、名前が "ROLE_ADMIN"で始まる権限を検索することです。コードの断片は以下の通りである:( "?#1 principal.authorities [authority.startsWith( 'ROLE_ADMIN')]のサイズ()> 0")
@PreAuthorize パブリックオブジェクトapiName(プリンシパルプリンシパル){...}
"#principal.authorities?[authority.startsWith( 'ROLE_ADMIN')]"という表現は、すべての権限名が "ROLE_ADMIN"で始まる配列を返します。配列のサイズが0より大きい場合、ユーザーはメソッドを呼び出す権限を持ちます。
乾杯!
0
Springs hierarchical rolesを使用する方が良いと思います。そうすれば、すべてのROLE_ADMIN_L1 ...がROLE_ADMINであるように設定することができます。ドキュメント
<bean id="roleVoter" class="org.springframework.security.access.vote.RoleHierarchyVoter">
<constructor-arg ref="roleHierarchy" />
</bean>
<bean id="roleHierarchy"
class="org.springframework.security.access.hierarchicalroles.RoleHierarchyImpl">
<property name="hierarchy">
<value>
ROLE_ADMIN > ROLE_STAFF
ROLE_STAFF > ROLE_USER
ROLE_USER > ROLE_GUEST
</value>
</property>
</bean>
ROLE_ADMIN ⇒ ROLE_STAFF ⇒ ROLE_USER ⇒ ROLE_GUEST
から
例ですから、このような何か必要があります:
<property name="hierarchy">
<value>
ROLE_ADMIN_L1 > ROLE_ADMIN
ROLE_ADMIN_L2 > ROLE_ADMIN
ROLE_ADMIN_L3 > ROLE_ADMIN
</value>
</property>
を、私は道を考え出し@PreAuthroize("hasRole('ADMIN')")
関連する問題
- 1. 春のセキュリティ、春のセキュリティでアクセス= "hasAnyRole( 'ROLE_ADMIN')
- 2. 春のセキュリティ事前認証されたユーザーのログイン
- 3. 春のセキュリティ認証
- 4. Grails 3 Springセキュリティ事前認証
- 5. 春のセキュリティ認証のリモート
- 6. LDAP認証 - 春のセキュリティ - LdapAuthenticationProvider
- 7. 春のセキュリティ認証エントリポイント
- 8. 春のセキュリティ認証方法
- 9. 手動認証春のセキュリティ
- 10. 春のセキュリティでのグローバル認証
- 11. 事前認証
- 12. 春のセキュリティからのアプリケーションの認証
- 13. ユーザ名パスワード春のセキュリティでの認証
- 14. 認証マネージャのプロパティファイル春のセキュリティ
- 15. 春のセキュリティ4 - 認証のマッピング
- 16. 春のセキュリティ認証マネージャの問題
- 17. 春:セキュリティの注釈同等:認証マネージャとセキュリティ:グローバル・メソッド・セキュリティ
- 18. Springブート - セキュリティ - 認証ワークフローで事前認証ルールを追加する方法
- 19. 春のセキュリティ - URLによる認証
- 20. 春のセキュリティとカスタムWS認証
- 21. 春のセキュリティおよびLDAP認証
- 22. 春のセキュリティtaglibでhasRole( 'ROLE_ADMIN')を使用しない方法
- 23. Springセキュリティは「hasRole( 'ROLE_ADMIN')」またはROLE_ADMINで動作しません
- 24. 春のセキュリティ、BCrypt、および春のデータレストのダイジェスト認証
- 25. 春のセキュリティでLDAP認証とデータベース認証を行う方法は?
- 26. Tom BootによるLDAP認証(事前認証)
- 27. 事前認証、コバルトは、YouTubeの事前認定についてWEBPページ
- 28. 春のセキュリティは、次のように認証リターンが
- 29. 春のセキュリティ:ローカルリクエストの認証は必要ありません
- 30. 春のセキュリティは、私は、次の春のセキュリティ設定を持っている認証失敗-URL
これは私が欲しいものではありません。 ROLE_ADMINにはグローバル権限があります。 ROLE_ADMIN_XXXには、ROLE_ADMINが呼び出せるAPIのサブセットがあります。私は@PreAuthroize( "hasAnyAuthority( ''))アノテーションの簡単な解決策を探しています。 –
注釈にROLE_ADMIN_XXXの番号を記載するのではなく、AFAIKは春の組み込みツールでは不可能です。 'hasAnyAuthority' [here] [https://github.com/spring-projects/spring-security/blob/ce20cfcb9803a6175f6befc9008cadcc4e3b6d72/core/src/main/java/org/springframework/security/access/expression/SecurityExpressionRootの実装です。 java]では、一連のロールで単純なcontainsを実行します。 –