为路由添加授权

时间:2015-06-16 17:20:57

标签: ruby-on-rails rest routes authorization

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

我在routes.rb中定义了一个故障单资源。

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

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

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

2 个答案:

答案 0 :(得分:4)

你知道宝石rolifyCanCanCan吗?

我认为他们可以帮助您在一个地方管理资源授权,而不必在每个控制器中执行。

答案 1 :(得分:0)

使用cancan gem是管理不同资源上的用户授权的常用方法。您可以浏览this railscast,其中涵盖了使用此gem的基础知识。

注意:Cancan gem不会更新,因此建议使用cancancan,它具有类似的功能和语法,但会得到积极支持和更新。