使用Devise/Cancan/Rolify的组合

6
我正在尝试建立一个授权/身份验证系统,但是我感到困惑,所以我有几个问题:
1. 在很多教程中,人们建立用户/角色HABTM关系。 我理解这允许每个用户拥有多个角色,但如果您希望每个用户只有一个角色,这是否必要?如果我想为“活动”和“非活动”用户提供选项,那么那些应该是角色还是其他什么?
2. 在Cancan wiki中,它说如果您希望一个用户拥有一个角色,您应该只将其作为属性,然后使用“can:manage,:all if user.role ==“admin””,但这不是很危险吗,因为每次“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/,但我无法按照自己想要的方式使其正常工作。我该怎么做?

1个回答

8

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

CanCan不关心您如何定义应用程序中的角色。您也可以在用户模型中有一个角色字段。

至于“活跃”和“非活跃”用户,您有两个选择。您可以拥有该状态的字段,或者您可以有一个“非活跃”角色,并将任何其他角色视为“活跃”。这取决于您对“活跃”含义的理解以及如何在应用程序中使用该信息。

2. 将用户角色存储为字符串没有问题。

角色存储为字符串并不会使其不安全。但是,您应该使用attr_protected来防止用户角色的批量赋值

attr_protected :role

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接