permissions - spring-security 编写自定义 PermissionEvaluator - 如何注入(inject) DAO 服务?

标签 permissions constructor spring-security inject

我正在使用 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 以便我可以访问数据?我可以注入(inject)它,意思是 PermissionEvaluator Spring 管理吗?或者如何让我的 dataProvider 进入 Evaluator?

最佳答案

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

@Inject 
private PermissionManager permissionManager;

会工作得很好。

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


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

并注入(inject)自定义 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>

关于permissions - spring-security 编写自定义 PermissionEvaluator - 如何注入(inject) DAO 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7484168/

相关文章:

java - Hadoop:调用getFsStatistics时出现NullPointerException

javascript - 让构造函数返回 Promise 是不好的做法吗?

spring - GWT Spring 安全集成(纯 GWT,无 JSP)

shell - 如何获取错误输出并将其存储在变量或文件中

sql-server - 数据库 Access 控制: Application or Database level control?

c++ - 私有(private)类成员延迟初始化的最佳实践

c++ - 如何实现从其基类获取变量的构造函数?

java - Spring Security 中 Web 忽略和 Http 允许之间的区别?

spring-mvc - Siteminder 的 Spring Security Java 配置

java - 振动器许可强制关闭