2014-04-01 156 views
0

我尝试使用spring security ACL强制执行一个新应用程序,在读完一些内容后,我对每个ACE的权限都有问题。我期待,如果一个主体拥有的域对象实例的行政许可(16)能够与此批注来访​​问的方法:春季安全acl管理权限

@Override 
@PostFilter("hasPermission(filterObject, 'READ')") 
public List<Project> findAllProjects() { 
    TypedQuery<Project> tq = em.createNamedQuery("Project:findAll", Project.class); 
    List<Project> projects = tq.getResultList(); 
    return projects; 
} 

@PostFilter("hasPermission(filterObject, 'ADMINISTRATION') OR hasPermissions(filterObject,'READ')") 

它似乎工作。
所以,我的问题是:这些权限是不是分层的?
我的意思是,为什么我必须明确指定具有读取权限的方法的管理权限?不是管理员比阅读“更大”吗?
我在想,如果我授予用户一个管理权限,即用户将能够访问所有使用“较低”操作(C,R,U,D)保护的方法/对象而不是管理员。

回答

0

简答:不,权限不是开箱即用的层次结构。

如果您希望它们是分层的,您需要自定义实现PermissionEvaluator或类似的。

+0

好的,谢谢澄清。 –