Spring Security一个角色不同的权限

时间:2014-02-20 15:15:18

标签: java spring spring-security

我在我的项目中使用Spring-Security。我对此有疑问,因为我在IS中有3个角色。用户,经理,管理员。在我的系统中有很多房间,每个房间都有一个经理。但经理只能管理他自己的房间。最好的方法是什么?现在我只有基本的安全经理可以管理所有房间。但这只适用于管理员。我的问题是什么是最好和最快的方式? (因为这个解决方案似乎有点大)

在控制器中使用角色和权限

@PreAuthorize("hasRole('ROLE_FORUM_MANAGER') and hasPermission(#forum,'update'))
and domain ACL

和域ACL

  

http://docs.spring.io/spring-security/site/docs/3.1.x/reference/domain-acls.html

或其他什么?

我要求最简单,最快捷的方式。

1 个答案:

答案 0 :(得分:2)

这是使用基于ACL的解决方案的最常见情况,因为权限只能根据所使用的域对象来确定。

要在Acls中执行此操作,请先为每个房间创建一个Acl。然后每个用户作为SID表中​​类型主体的安全标识。然后通过创建将房间ACL链接到用户SID的ACE(访问控制条目),授予每个用户访问其房间的权限。

基于角色的身份验证(RBAC)不应该适用于此,因为它不允许根据用户和域对象之间的关系提供细粒度的权限。

可以将RBAC hasRole与Acl hasPermission(#forum,'update')结合使用,但由于我们已经使用了Acls,因此最好只使用Acls来推送对数据的权限访问。

如果稍后我们改变了访问某个房间的想法,那么就没有代码影响,只会影响安全参考数据。