我想在我的 rails 应用程序中实现组权限。最有效的方法是啥?

Posted

技术标签:

【中文标题】我想在我的 rails 应用程序中实现组权限。最有效的方法是啥?【英文标题】:I want to implement group permissions in my rails app. What is the most efficient way?我想在我的 rails 应用程序中实现组权限。最有效的方法是什么? 【发布时间】:2012-02-29 02:35:55 【问题描述】:

我希望能够让我的管理员用户能够控制其帐户上的标准用户可以执行的几乎所有操作。在创建组权限以供他们管理时,是拥有一个包含一百多行布尔值的巨型表更好,还是将所有权限存储在存储在数据库文本字段中的哈希中更好?也许只存储他们不能做的事情?或者他们能做的事情? (哪个列表通常更小?)

在 webapps 中是否有执行此操作的标准方法?

我要存储的一些示例:

可以删除对象吗? 可以编辑对象吗? 可以创建对象吗? 可以_delete_minions_object? can_delete_managers_object?

我真的很喜欢can_? can-can 使用的语法。 如果不是为做事定义函数,Can-can 会很棒。除了存储所有这些布尔值之外,我最终可能还会这样做。因为有帐户级别的权限会覆盖组级别的权限。

【问题讨论】:

【参考方案1】:

[编辑] - 稍微澄清一下代码

我认为如果有任何类型的权限分组(即将用户分组为经理、奴才......具有相似的权限,我认为你真的应该再次检查 CanCan )

以下是技能类在您的情况下的示例:

class Ability
  include CanCan::Ability

  def initialize(user)

    # All registered users can edit their own objects
    can :manage, [Object], :user_id => user.id

    # Different roles
    if user.moderator?
      can :delete, [Object], :user_id => user.minion.id
    elsif user.admin?
      can :delete, [Object], :user_id => user.manager.id
    end
  end
end

【讨论】:

我喜欢这样,但最终,帐户管理员将能够自定义其帐户组的权限。【参考方案2】:

Here 是一个不错的 Ruby 身份验证 gem 列表。

我已经深入使用过 CanCan 和 acl9,并查看了其他几个。我同意使用 CanCan 的建议,但我在需要用户、角色和组分配权限管理的复杂应用程序上使用 acl9 gem 也取得了不错的成功。

【讨论】:

我在 gems 上遇到的最大问题是我需要允许我的管理员自定义权限。不过不错的清单。 啊,我明白了。我开发了一个自定义 Rails 应用程序,该应用程序将自定义权限映射到管理员可以控制这些权限的操作。但我们进行了大量调查,试图找到支持此功能的 gem,但找不到任何东西。 github.com/berkmancenter/zone1 是仓库。【参考方案3】:

这取决于权限的确切用途,也许像 CanCan 这样的东西是你所追求的?

https://github.com/ryanb/cancan

您能否描述一些其他权限?

【讨论】:

我看过cancan,它不是基于数据库的。一切都在方法上......我最终需要使用一堆方法......所以我可能会看看这个......但在我看来这与在你的 / 中定义一堆方法完全相同lib 文件夹。我将添加一些示例。

以上是关于我想在我的 rails 应用程序中实现组权限。最有效的方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

html javascript.groupAsynTest.html - 在“javascript ninja”中实现组asyn测试的优秀代码

我想在我的 HTML 代码中实现一个 Youtube 视频 [重复]

如何计算两个图像的相似度百分比,如下图我想在我的项目中实现它

在 asp.net MVC 中实现超级用户功能?

以编程方式授予本地用户权限以使用 .Net 启动服务

在 Rails 中实现聊天