4

私はSpring-Securityを使用しており、独自のPermissionEvaluatorを実装する必要があります(他の質問への回答に従って.

AclPermissionEvaluator ただし、ここで標準の実装を見ると、DAO がコンストラクターを介して設定されていることがわかります。

カスタム PermissionEvaluator を次のように宣言すると:

<global-method-security secured-annotations="enabled" pre-post-annotations="enabled">
    <expression-handler ref="expressionHandler"/>
</global-method-security>

<beans:bean id="expressionHandler" class="org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler">
    <beans:property name="permissionEvaluator">
        <beans:bean id="permissionEvaluator" class="com.npacemo.permissions.SomePermissionsEvaluator"/>
    </beans:property>
</beans:bean>

データにアクセスできるようにするには、どこで DAO を Eva​​luator に入れますか? 注入できますか。つまり、PermissionEvaluator Spring は管理されていますか? または、dataProvider を Eva​​luator に入れるにはどうすればよいですか?

4

1 に答える 1

6

ちょうどそれを理解しました: PermissionEvaluator は Spring 管理なので、

@Inject 
private PermissionManager permissionManager;

うまくいきます。


編集: 私たちのプロジェクトでは、おそらく標準の実装を拡張する独自の PermissionResolver を実装します。

public class OurPermissionEvaluator extends AclPermissionEvaluator{


    public CombinedPermissionEvaluator(AclService aclService) {
        super(aclService);
    }

そしてカスタム ACLService を注入します (このチュートリアルに従います)

public class OurAclServiceImpl implements AclService {

ここで、カスタム データベース構造から ACL 情報を取得します。

すべてを接続するには、スプリング セキュリティ コンタクトの例に従います。

<b:bean id="permissionEvaluator" class="path.to.OurPermissionEvaluator">
    <b:constructor-arg ref="aclService"/>
</b:bean>

aclService は次のように宣言する必要があります。

  <bean id="aclService" class="path.to.OurAclServiceImpl">
     <constructor args here... >
  </bean>
于 2011-09-21T07:25:59.760 に答える