Spec-Zone.ru › Ruby on Rails 7.0

модуль ActionController::RequestForgeryProtection::ClassMethods

Публичные методы экземпляра

protect_from_forgery(options = {}) Показать исходный код
# File actionpack/lib/action_controller/metal/request_forgery_protection.rb, line 156
def protect_from_forgery(options = {})
  options = options.reverse_merge(prepend: false)

  self.forgery_protection_strategy = protection_method_class(options[:with] || :null_session)
  self.request_forgery_protection_token ||= :authenticity_token
  before_action :verify_authenticity_token, options
  append_after_action :verify_same_origin_request
end

Включить защиту от подделки запросов. Имейте в виду, что запросы GET и HEAD не проверяются.

class ApplicationController < ActionController::Base
  protect_from_forgery
end

class FooController < ApplicationController
  protect_from_forgery except: :index
end

Вы можете отключить защиту от подделки запросов на контроллере, пропуская проверку с помощью before_action:

skip_before_action :verify_authenticity_token

Допустимые параметры:

  • :only/:except - Применить защиту от подделки запросов только к подмножеству действий. Например, only: [ :create, :create_all ].

  • :if/:unless - Полностью отключить защиту от подделки запросов в зависимости от переданного Proc или ссылки на метод.

  • :prepend - По умолчанию проверка токена аутентификации будет добавлена в позицию вызова protect_from_forgery в вашем приложении. Это означает, что любые колбэки, добавленные ранее, будут выполнены первыми. Это полезно, когда защита от подделки запросов должна зависеть от других колбэков, таких как методы аутентификации (Oauth против аутентификации по cookie).

    Если вам нужно добавить проверку в начало цепочки колбэков, используйте prepend: true.

  • :with - Установить метод для обработки непроверенных запросов.

Встроенные методы обработки непроверенных запросов:

  • :exception - Выбрасывает исключение ActionController::InvalidAuthenticityToken.

  • :reset_session - Сбрасывает сеанс.

  • :null_session - Предоставляет пустой сеанс во время запроса, но не сбрасывает его полностью. Используется по умолчанию, если опция :with не указана.

Вы также можете реализовать пользовательские классы стратегии для обработки непроверенных запросов:

class CustomStrategy
  def initialize(controller)
    @controller = controller
  end

  def handle_unverified_request
    # Custom behaviour for unverfied request
  end
end

class ApplicationController < ActionController:x:Base
  protect_from_forgery with: CustomStrategy
end
skip_forgery_protection(options = {}) Показать исходный код
# File actionpack/lib/action_controller/metal/request_forgery_protection.rb, line 170
def skip_forgery_protection(options = {})
  skip_before_action :verify_authenticity_token, options
end

Отключить защиту от подделки запросов. Это обёртка для:

skip_before_action :verify_authenticity_token

См. skip_before_action для допустимых параметров.

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API