如何在spring security acl中检查我的对象权限,而不是使用hasPermission注释

时间:2012-06-02 22:35:49

标签: spring spring-security acl

有没有办法直接从我的代码检查我的类对象权限,而不是使用注释模型

@PostAuthorize("hasPermission(returnObject, 'WRITE')")
public BaseData getSingle(Long id);

2 个答案:

答案 0 :(得分:1)

假设您打算使用ACL模块,表达式在AclPermissionEvaluator中实现。因此,您可以使用AclService连接该实例,将其注入需要它的类中并直接调用hasPermission方法。

答案 1 :(得分:1)

经过几次尝试后,我可以实现解决方案,以下是代码

ACL-conf.xml中

...
<bean class="org.springframework.security.acls.AclPermissionEvaluator" id="permissionEvaluator">
        <constructor-arg ref="aclService"/>
</bean>
...

samplecontroller.java

 @Autowired
    private PermissionEvaluator permissionEvaluator ;

    Permission permission = BasePermission.WRITE;
   permissionEvaluator.hasPermission(authentication,aclObject,permission);
....

希望这有用。