【问题标题】:skip authorization for specific controllers using pundit in rails 4在 rails 4 中使用 pundit 跳过对特定控制器的授权
【发布时间】:2015-05-23 01:37:33
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby-on-rails devise pundit


    【解决方案1】:

    skip_after_action :verify_authorized

    【讨论】:

      【解决方案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,其他必须经过授权。

      我希望它对其他人有用。

      【讨论】:

      • 最好使用before_action :skip_authorization, only: :index,这样一来你在做什么就一目了然,如果你决定在任何其他操作中也想这样做,你也不必复制任何东西
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-08
      • 1970-01-01
      • 2017-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多