【问题标题】:spring-security writing a custom PermissionEvaluator - how to inject a DAO service?spring-security 编写自定义 PermissionEvaluator - 如何注入 DAO 服务?
【发布时间】:2023-03-04 23:45:01
【问题描述】:

我正在使用 Spring-Security,我需要实现自己的 PermissionEvaluator(按照我的 other question 的答案。

但是查看标准实现 AclPermissionEvaluator here 我注意到,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 放入 Evaluator 以便访问数据?我可以注入它,意思是 PermissionEvaluator Spring 管理吗?或者如何让我的 dataProvider 进入 Evaluator?

【问题讨论】:

    标签: permissions constructor spring-security inject


    【解决方案1】:

    刚刚想通了:PermissionEvaluator 是 Spring 管理的,所以

    @Inject 
    private PermissionManager permissionManager;
    

    会正常工作的。


    编辑: 对于我们的项目,我们将实现我们自己的 PermissionResolver 可能会扩展标准实现:

    public class OurPermissionEvaluator extends AclPermissionEvaluator{
    
    
        public CombinedPermissionEvaluator(AclService aclService) {
            super(aclService);
        }
    

    并注入自定义 ACLService(遵循 this 教程)

    public class OurAclServiceImpl implements AclService {
    

    我们从自定义数据库结构中检索 ACL 信息的位置。

    要连接它,我们将遵循 spring-security 联系人示例:

    <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>
    

    【讨论】:

      猜你喜欢
      • 2020-09-24
      • 2015-03-24
      • 1970-01-01
      • 2012-08-09
      • 2016-12-07
      • 2013-11-25
      • 2016-09-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多