0

一般的な使用法は次のとおりです。

<intercept-url pattern="/**" access"ROLE_ADMIN" />

次のようなことは可能ですか:

<intercept-url pattern="/**" access"hasPermission("addSomething1") /> 

許可されているの下にリストされているセキュリティ式の中で hasPermission を見たことがない:

私たちが持っているのは:

認証; denyAll; hasAnyRole(役割のリスト); hasIpAddress; isAnonymous() など

メソッドのセキュリティに「hasPermission」が許可されている場合、それはWebリクエストにも許可されているはずです。

ありがとう、

4

2 に答える 2

5

うん、可能です。式ベースの評価に切り替えるだけです

 <security:http use-expressions="true">

式ハンドラーに次を提供PermissionEvaluatorします。

<security:expression-hanlder ref="webSecurityExpressionHandler" />

<bean id="webSecurityExpressionHandler" class="org.springframework.security.web.access.expression.DefaultWebSecurityExpressionHandler>
    <property name="permissionEvaluator" ref="aclPermissionEvaluator" />
</bean>

もちろん、PermissionEvaluator実装が必要です。独自に作成することも、プロジェクトを使用することもできますspring-acl

于 2013-06-28T06:16:11.187 に答える
2

Pavel Horal は、intercept-url タグで式を有効にする方法を既に説明しました (ところで、有効にした後、すべてのアクセス属性を SpEl 式として記述する必要があります!)

ただし、知っておく必要があることが 1 つあります。intercept-url タグで使用できる式は、メソッド ベースのセキュリティ SpEl 式 (@PreAuthorize など) で使用できる式とは異なります。これは、最初のものは で実装されてWebSecurityExpressoonRootいますが、他のものは で実装されているためですMethodSecurityExpressionRoot

この質問で私の回答を参照してください。

于 2013-06-28T06:55:45.807 に答える