我正在使用rails 4,设计用于身份验证,Pundit用于授权。我已经限制我的应用程序通过以下代码检查每个控制器上的授权。
class ApplicationController < ActionController::Base
include Pundit
after_action :verify_authorized
#.....
end
但是,我想跳过我的应用程序中两个特定控制器的授权(它们向公众开放,用户无需登录)。如何在不删除ApplicationController中的verify_authorized的情况下实现它?
答案 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
,其他操作必须经过授权。
我希望它对其他人有用。