春季安全行政许可

时间:2014-04-01 09:05:12

标签: java spring spring-security spring-security-acl

我尝试使用Spring安全ACL强制执行一个新的应用程序,经过一些阅读后,我对每个ACE的权限都有问题。我期望如果主体对域对象实例具有管理权限(16),则能够访问具有此批注的方法:

@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')")
它似乎有用。
所以,我的问题是:Aren这些权限是否分层? 我的意思是,为什么我必须在具有读取权限的方法上明确指定管理员权限?不是管理员&#34;更大&#34;比阅读?
我在想,如果我向用户授予管理员权限,那么用户将能够访问受&#34;更低&#34;保护的所有方法/对象。操作(C,R,U,D)而不是管理员。

1 个答案:

答案 0 :(得分:0)

简短回答:不,权限不是开箱即用的分层。

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