可以在hasPermission表达式中的@PostFilter中使用AclEntryVoter processConfigAttribute吗?

时间:2015-09-28 21:51:03

标签: spring spring-security acl

我使用的是Spring Security 4.0.2.RELEASE。

我已经定义了一个像这样的自定义AclEntryVoter:

<bean id="aclReadVoter" class="org.springframework.security.acls.AclEntryVoter">
    <constructor-arg ref="aclService" />
    <constructor-arg value="VOTE_ACL_READ" />
    <constructor-arg>
        <list>
            <util:constant static-field="org.springframework.security.acls.domain.BasePermission.READ" />
        </list>
    </constructor-arg>
    <property name="processDomainObjectClass" value="com.example.domain.MyDomainObject" />
</bean>

@Service类中,我想在@ VOTE_ACL_READ方法中使用processConfigAttribute PostFilter作为权限,如下所示:

@PostFilter("hasPermission(filterObject, 'VOTE_ACL_READ')")
public List<MyDomainObject> findAll() {
    ...
}

然而,在尝试这样做时,我得到了

  java.lang.IllegalArgumentException: Unknown permission 'VOTE_ACL_READ'

  org.springframework.security.acls.domain.DefaultPermissionFactory.buildFromName(DefaultPermissionFactory.java:133)

DefaultPermissionFactory.buildFromName正在传递VOTE_ACL_READ,而我希望它能够在自定义org.springframework.security.acls.domain.BasePermission.READ内定义AclEntryVoter

是否可以在hasPermission表达式中使用VOTE_ACL_READ processConfigAttribute作为权限?如果是,怎么样?

0 个答案:

没有答案