2012-06-04 61 views
6

我试图建立一个授权/认证系统,而且我感到困惑,所以我有几个问题:使用设计/惨惨/ Rolify一起

  1. 在很多教程,人们建立了用户/角色HABTM关系。 我得到这允许每个用户有多个角色,但如果你 希望每个用户只能有一个角色,这是必要的?如果我想为“活跃”和“非活跃”用户提供选项,那么这些 应该是角色还是其他角色?
  2. 在惨惨维基,它说,如果你想要一个用户拥有一个角色,你应该只让它作为一个属性,然后使用“可以 :管理:所有如果user.role ==‘admin’的”,但是不是 危险,因为每次“管理员”只是一个字符串?这个 重要吗?有什么更好的方法来处理这个问题?

我已经尽我所能通过参与一切的文档阅读,我开始使用此教程

http://railsapps.github.com/tutorial-rails-bootstrap-devise-cancan.html

虽然我也看到 http://starqle.com/articles/rails-3-authentication-and-authorization-with-devise-and-cancan-part-1/和 tonyamoyal.com/2010/09/29/rails-authentication-with-devise-and -cancan-part-2-restful-resources-for-administrators/

我只是不能真正按照我想要的方式工作。我该怎么做呢?

回答

8

1.你并不需要多个角色或一个角色表

康康舞是不可知的,你是如何在你的应用程序中定义的角色。您可以在用户模型中轻松地创建角色字段。

至于“积极”和“无效”的用户,你有两个选择。您可以为该状态设置一个字段,或者您可以具有“不活跃”角色并考虑其他任何“活动”角色。这取决于您的“主动”是什么意思,以及您如何在应用程序中使用该信息。

2.有没有错,在一个字符串存储用户的角色。

该角色被存储为一个字符串不使其不太安全的。但是,您应该使用用户角色的attr_protected to prevent mass assignment

attr_protected :role 

这样,用户将无法更新自己的角色。