繁体   English   中英

使用Devise / Cancan / Rolify

[英]Using Devise/Cancan/Rolify together

我正在尝试建立授权/身份验证系统,我感到困惑,所以我有几个问题:

  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与 - 色器件和 - 康康舞部分-2-宁静资源换管理员/

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

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

CanCan与您在应用程序中定义角色的方式无关。 您可以在用户模型中轻松拥有角色字段。

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

2.将用户角色存储在字符串中没有任何问题。

角色存储为字符串这一事实并不会降低安全性。 但是,您应该使用attr_protected来防止用户角色的大量分配

attr_protected :role

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM