如果操作有以下资源,专家就会工作得很好:
class Admin::PagesController << ApplicationController
def index
@pages = Page.all
end
end如何在没有任何资源的情况下授权方法?
class Admin::DashboardController << ApplicationController
def index
end
end我有文件策略/admin/dashboard_policy.rb. hav
class Admin::DashboardPolicy < ApplicationPolicy
class Scope < Scope
def resolve
scope.all
end
end
end此文件由命令生成:
rails g pundit:policy Admin/Dashboard文件视图/admin/index.html.slm只有静态文本。没别的了。
如何授权没有任何资源的行动?
问候Sssebaaa
发布于 2018-10-30 15:55:08
若要在没有作用域或模型实例的情况下进行授权,请使用符号或符号数组(命名空间时)调用authorize:
class Admin::DashboardController << ApplicationController
def index
authorize [:admin, :dashboard]
end
end这将调用策略类上的#index?方法:
class Admin::DashboardPolicy < ApplicationPolicy
def index?
user.admin?
end
end您还可以从策略中完全删除该范围。
发布于 2018-10-30 13:56:27
如果您没有任何回调,检查策略是否有作用域,如专家doc建议的那样,如
class ApplictationController < ActionController::Base
include Pundit
after_action :verify_policy_scoped, only: :index
end你没什么可做的。
但是,如果有回调,则可以在控制器操作中跳过它,如下所示:
class Admin::DashboardController << ApplicationController
skip_after_action :verify_policy_scoped, only: [:index]
def index
end
endhttps://stackoverflow.com/questions/53061328
复制相似问题