问题是我应该在对象作用域中使用角色还是只使用ACLs。
这里是用例,假设我希望用户对companyA拥有CRUD权限,但只对companyB拥有读取权限。
现在我可以用两种方式来实现这一点。
方法1)
创建两个角色
1) ROLE_ADMIN :担任此角色的用户将拥有对任何公司的所有CRUD权限。
2) ROLE_SUPPORT :此角色中的用户只具有e级的读取权限
现在我可以说,
UserA-> ROLE_ADMIN --关于CompanyA
ROLE_SUPPPORT ->在CompanyB上.
注意:这里我不对对象设置任何权限。
方法2)只有一个角色管理员,我可以说
User->具有CRUD权限--对CompanyA
RRead ->具有CompanyB权限
我不知道哪一种方法是首选的,以及为什么。在方法#2中,我看不到角色中的值,因为不管怎么说,对对象都定义了权限。我所看到的唯一有意义的情况就是创造。如果允许用户创建对象,用户就不会预先知道,因为那时对象不存在。在方法2中,我不需要任何多个角色。但听起来不对。
那么,当我可以使用方法1做同样的事情时,为什么要使用方法2呢?
希望听到你的消息。
谢谢保罗
发布于 2014-08-14 14:24:54
角色和ACL服务于不同的目的。
角色限制在某些资源上,例如,您可以说UserA可以访问公司或不能访问公司。
使用ACL,您可以说UserA可以访问CompanyA,但不能访问公司内部的CompanyB。
因此,角色不如ACL细粒度,但它们可以协同工作。
回到您的情况,您将需要ACL来限制UserA对CompanyA进行读取和为CompanyB进行写入,但是需要角色说明UserA可以访问类型公司的资源。这还将解决关于创建的另一个问题:因为UserA可以访问公司,所以他可以创建一个新的CompanyC,并且根据定义,ACL写访问将与CompanyC相关联(因为他是创建者)。
https://stackoverflow.com/questions/25293615
复制相似问题