【问题标题】:Using Devise/Cancan/Rolify together一起使用 Devise/Cancan/Rolify
【发布时间】:2012-06-08 14:39:47
【问题描述】:

我正在尝试设置授权/身份验证系统,但我很困惑,所以我有几个问题:

  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/

我真的无法让它按照我想要的方式工作。我该怎么做?

【问题讨论】:

    标签: ruby-on-rails authentication devise authorization cancan


    【解决方案1】:

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

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

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

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

    角色存储为字符串这一事实并没有降低它的安全性。但是,您应该使用用户角色的attr_protected to prevent mass assignment。

    attr_protected :role
    

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

    【讨论】:

      猜你喜欢
      • 2017-06-04
      • 2013-07-10
      • 1970-01-01
      • 1970-01-01
      • 2014-05-28
      • 1970-01-01
      • 1970-01-01
      • 2012-08-09
      • 1970-01-01
      相关资源
      最近更新 更多