【问题标题】:Adding authorization to routes为路由添加授权
【发布时间】:2015-06-16 17:20:56
【问题描述】:

我似乎找不到一个很好的例子。例如,我有一个TicketController

我在我的 routes.rb 中定义了一个票据资源。

您只需以客户身份登录即可获取票证,但您必须以管理员身份登录才能提交票证。

我目前在控制器级别执行此操作。对于某些控制器方法,我有一个 before_action,用于检查您是作为客户还是管理员登录。

我想知道正确的方法是什么。我认为理想情况下我可以要求对特定资源的特定操作进行一定的授权。例如,工单资源 GET 操作只需要以客户身份登录,而 PUT 操作只有在您是管理员时才能发生。

【问题讨论】:

    标签: ruby-on-rails rest routes authorization


    【解决方案1】:

    你知道rolifyCanCanCan 的宝石吗?

    我认为它们可以帮助您在一个地方管理资源的授权,而不必在每个控制器中都这样做。

    【讨论】:

    • Pundit gem 也值得研究。它使用策略类来定义谁应该能够执行什么操作
    【解决方案2】:

    使用cancan gem 是管理不同资源上的用户授权的常用方法。您可以通过 this railscast 了解使用此 gem 的基础知识。

    注意:Cancan gem 很久没有更新了,所以建议使用cancancan,它具有类似的功能和语法,但得到了积极的支持和更新。

    【讨论】:

      猜你喜欢
      • 2015-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-19
      • 2015-12-30
      • 1970-01-01
      • 2022-11-17
      相关资源
      最近更新 更多