【问题标题】:Pundit vs Rolify two tier of rolesPundit vs Rolify 两层角色
【发布时间】:2015-12-17 20:22:33
【问题描述】:

我正在为当前的项目重新使用 Rails,并且正在讨论使用什么 auth gem。我面临的挑战是有两层角色。

  1. 组织级别的角色 - 想想 SaaS 风格的层级,每个组织都可以访问不同的功能集

  2. 用户级角色 - 更传统,我之前使用过 pundit、cancancan 等。

这里的怪癖也是一个用户可以属于许多组织。用户正在浏览的当前组织存储在会话中,具体取决于某些 URL 参数。

任何人都可以分享一些代码示例,以授权级别级别角色以及组织的功能角色吗?

例如

用户 A 属于 Org 123 并且是管理员,他们可以创建/更新/删除帖子,但不能将投票附加到帖子

用户 B 属于 Ord 543 并且是管理员。他们可以创建/更新/删除帖子,并且可以创建投票,因为他们的组织具有该功能。

有些人建议对组织使用 rolify,对用户使用 pundit,但我觉得有一种更简单的方法可以做到这一点,而无需使用两个单独的系统。

【问题讨论】:

    标签: ruby-on-rails-4 authorization


    【解决方案1】:

    如果我错了,请原谅我,但我认为您误解了 Pundit 和 Rolify 的用例。

    据我了解,像 Pundit 和 CanCanCan 这样的 gem 旨在处理授权,而不是角色。同样,Rolify 不处理授权,而是处理为用户建立角色。

    如果您认为 Rolify 不适合您,我建议您创建自己的角色系统。在我看来,有两种主要的实施途径:

    1. 用户可以拥有一个角色
    2. 用户可以拥有多个角色

    听起来,您希望为用户实现多个角色。显然有许多不同的方法可以实现这一点,最直接(但可能不安全)的方法是在您的用户模型上添加一个数组属性,该属性存储用户拥有的不同角色类型。

    【讨论】:

      猜你喜欢
      • 2016-06-02
      • 1970-01-01
      • 2016-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-01
      • 1970-01-01
      • 2021-09-13
      相关资源
      最近更新 更多