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

skip authorization for specific controllers using pundit in rails 4

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

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

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

skip_after_action :verify_authorized

我正在与 Rails5 合作,我想跳过授权 只需一个动作,而不是整个控制器。因此,根据 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,其他操作必须经过授权。

我希望它对其他人有用。