Spec-Zone.ru › Ruby on Rails 5.1

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

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

protect_from_forgery(options = {}) Показать исходный код
# File actionpack/lib/action_controller/metal/request_forgery_protection.rb, line 122
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 не указан.

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

Spec-Zone.ru

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