【问题标题】:Roles authorization with Rails 3 and DeviseRails 3 和 Devise 的角色授权
【发布时间】:2011-06-02 02:13:42
【问题描述】:

自从我升级到 Rails 3 后,我就一直在使用 devise,那是在第一个或第二个 beta 版本左右,现在我还需要一些角色。在网上搜索后,看起来 CanCan 应该是最好的解决方案。但我不确定 CanCan 是否可以满足我的需求,比如我想要一个可以编辑/销毁主题的论坛版主,但创建主题的用户也应该能够编辑,那么我该怎么做呢?

【问题讨论】:

  • Devise 中的角色怎么样,你能用吗?有简单的“admin_flag”解决方案或允许同一用户多个角色的整个角色对象路由。全部在 Devise github 网站上。他们可能最近添加了这个。不过我不知道CanCan。也许您有一个要求可以选择。

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


【解决方案1】:

根据您上面的简短描述,我想 CanCan 应该能够满足您的需求。

CanCan 主要是简化语法以集中授权规则。它不提供开箱即用的角色。但是,CanCan wiki 有很多非常有用的链接,包括实现角色的 simplemore complex 方法。

我发现直接对所有权建模而不是尝试拥有“所有者”角色很有帮助。因此(假设您使用上面更简单的角色方案)您上面描述的用例将在您的能力定义中建模,因此:

def initialize(user)
  ...
  can :manage, Topic if user.is? :moderator
  can :manage, Topic { |topic| if (topic.user_id == user.id) }
  ...
end

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 2011-09-29
    • 2013-07-28
    相关资源
    最近更新 更多