跳至内容 跳至搜索
方法
P

实例公共方法

permissions_policy(**options, &block)

重写全局配置的 Feature-Policy 标头的部分内容

class PagesController < ApplicationController
  permissions_policy do |policy|
    policy.geolocation "https://example.com"
  end
end

选项的传递方式类似于 before_action。例如,传递 only: :index 以仅在 index 操作上重写标头

class PagesController < ApplicationController
  permissions_policy(only: :index) do |policy|
    policy.camera :self
  end
end

需要一个在初始化程序中定义的全局策略,该策略可以为空

Rails.application.config.permissions_policy do |policy|
  # policy.gyroscope :none
end
# File actionpack/lib/action_controller/metal/permissions_policy.rb, line 33
def permissions_policy(**options, &block)
  before_action(options) do
    unless request.respond_to?(:permissions_policy)
      raise "Cannot override permissions_policy if no global permissions_policy configured."
    end
    if block_given?
      policy = request.permissions_policy.clone
      instance_exec(policy, &block)
      request.permissions_policy = policy
    end
  end
end