【问题标题】:What's the point of Rolify and CanCan?Rolify 和 CanCan 的意义何在?
【发布时间】:2014-01-27 20:54:50
【问题描述】:

我正在从事一个 RoR 项目,我对这个推荐用于我的目的的新 gem 有点困惑,Rolify。据我了解, rolify 与 CanCan 的功能几乎相同,只是它将能力(rolify 的角色)保存到数据库中。但是,在整个 Rolify wiki 上,我看到了有关将 Rolify 与 CanCan 一起使用的说明。

所以基本上,我想知道 Rolify 和 CanCan 之间有什么区别?我什么时候应该使用一个而不是另一个?

【问题讨论】:

    标签: ruby-on-rails devise rubygems cancan rolify


    【解决方案1】:

    CanCan 用于从应用程序的角度管理授权,它允许您将 X 控制器/操作限制为 X 用户。

    当您想深入到更细粒度的控制时,您可以使用 Rolify。 Rolify,超越简单

    if user.role == :super_admin
      # do something pretty cool stuff
    elsif user.role == :admin
      # do some more awesome stuff
    

    通过允许您向资源添加角色。假设您有一个论坛应用程序,您希望用户能够在游戏板上担任主持人角色。你会使用 rolify 来由

    user = User.find(2)
    user.add_role :moderator, Forum.where(type: 'Gaming')
    

    Rolify 还允许您通过使用类本身而不是实例来对类执行此操作(以防您希望用户成为所有版块的版主)

    user = User.find(2)
    user.add_role :moderator, Forum
    

    之后,它可以让您轻松查询资源/类以找出谁可以访问什么。除了帮助您管理角色范围之外。

    【讨论】:

    • 那么,将它们一起使用没有意义吗?只使用其中一种?
    【解决方案2】:

    CanCan 是一个授权库,可让您设置有关谁可以或不能执行某些操作的规则。

    Rolify 是一个 roles 库,可帮助您创建角色,然后您可以在 Cancan 授权规则中使用这些角色。

    【讨论】:

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