使用rails 4中的pundit跳过对特定控制器的授权

时间:2015-05-23 01:37:34

标签: ruby-on-rails devise pundit

我正在使用rails 4,设计用于身份验证,Pundit用于授权。我已经限制我的应用程序通过以下代码检查每个控制器上的授权。

class ApplicationController < ActionController::Base
  include Pundit
  after_action :verify_authorized
  #.....
end

但是,我想跳过我的应用程序中两个特定控制器的授权(它们向公众开放,用户无需登录)。如何在不删除ApplicationController中的verify_authorized的情况下实现它?

2 个答案:

答案 0 :(得分:8)

skip_after_action :verify_authorized

答案 1 :(得分:2)

我正在使用 Rails 5 ,我只想在一个操作中 跳过授权 ,而不是整个控制器。因此,根据documentation您可以执行的操作是在控制器操作中使用skip_authorization功能,如下所示:

class Admin::DashboardController < Admin::BaseController
    def index
        @organizers = Organizer.count
        @sponsors = Sponsor.count
        @brochures = Brochure.count

        skip_authorization
    end

    def sponsors_approve
        # some statements...
    end

    def organizers_approve
        # some statements...
    end
end

在此控制器中,唯一要跳过的操作是index,其他操作必须经过授权。

我希望它对其他人有用。