2011-03-04 58 views
1

请考虑以下情形:管理员>管理器>代表>客户>没有作用(公共访问页)访问级别/安全角色的设计选择:个人角色或继承

有了:有4个级别的访问的Web应用程序我目前的应用程序的设置,我可以允许2种方式访问​​:

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

  2. 我可以在表中分别分配每个角色。例如,用户将有3个角色分配给他们。因此,该应用程序不会承担角色优先/继承。我可以让管理员为用户分配角色,或者让一些代码在授予更高访问级别时自动为用户分配额外角色。

,此两种方法是从维护的角度看比较好?

P.S.

我不认为这很重要,但我使用Rails 3与CanCan &设计。 也是我设置了角色和用户之间的关系如下:

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

回答

2

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

此外,由于您使用的是CanCan,因此可以很容易地设置跌落。从初始化块顶部的访问权限最小的角色开始,然后继续工作。

+0

Srdjan,谢谢你的回复。后续问题:如果角色名称发生变化或我必须添加更多粒度角色支持,该怎么办?我的意思是 - 没有单一的垂直继承了。 I.E .:我想授予一些代表,新角色称为product_manager,并给予其他一些faq_manager,但另一个代表应该能够使用news_manager。你会如何处理这种情况?在过去 - 我使用第二种方法,它确实没问题。有什么想法吗? – konung 2011-03-04 21:51:37

+0

哦,如果你需要更多的粒度和角色不一定建立在彼此之上,我也会采用方法2.康康的美妙之处在于,如果你需要它,你也可以做。 – 2011-03-05 02:08:37