我使用的是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作为权限?如果是,怎么样?