访问级别/安全角色设计选择:单个角色或继承

时间:2011-03-04 15:36:47

标签: ruby-on-rails security design-patterns cancan

请考虑以下情况:具有4种访问权限的Web应用程序:admin>经理>代表性>客户>没有角色(公共访问页面)

使用我当前的应用设置,我可以通过两种方式进行访问:

  1. 我可以编写代码,它将承担角色优先权,即如果用户是经理 - 应用程序将自动假设他/她有权访问客户和客户的区域。代表可以,但不是管理员。

  2. 我可以在表格中单独指定每个角色。例如,用户将分配3个角色。因此,应用程序不会假定角色优先/继承。我可以让管理员为用户分配角色,或者使用一些代码,如果授予更高的访问级别,则会自动为用户分配额外的角色。

  3. 从可维护性的角度来看,这两种方法中的哪一种更好?

    P.S。

    我认为这不重要,但我正在使用Rails 3和CanCan&设计。 此外,我对角色和用户之间关系的设置如下:

    角色< => (HABTM)< =>用户

1 个答案:

答案 0 :(得分:2)

我有类似的角色要求,我选择了方法1.很自然地假设你去的角色层次越高,你拥有的访问权越多。所以,说经理可以访问代表所拥有的资源就可以了。

此外,由于您使用的是CanCan,因此非常容易设置。从初始化块顶部具有最少访问权限的角色开始,逐步完成。