Spec-Zone.ru › Ruby on Rails 7.1

модуль ActiveRecord::SignedId

Подпись Active Record

Публичные методы класса

signed_id_verifier_secret() Показать исходный код
# File activerecord/lib/active_record/signed_id.rb, line 13
class_attribute :signed_id_verifier_secret, instance_writer: false

Устанавливает секрет, используемый для проверки идентификатора с подписью, когда Active Record используется вне Rails. Внутри Rails это автоматически устанавливается с помощью генератора ключей приложения Rails.

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

signed_id(expires_in: nil, expires_at: nil, purpose: nil) Показать исходный код
# File activerecord/lib/active_record/signed_id.rb, line 112
def signed_id(expires_in: nil, expires_at: nil, purpose: nil)
  raise ArgumentError, "Cannot get a signed_id for a new record" if new_record?

  self.class.signed_id_verifier.generate id, expires_in: expires_in, expires_at: expires_at, purpose: self.class.combine_signed_id_purposes(purpose)
end

Возвращает подписанный идентификатор, сгенерированный с использованием предварительно настроенного ActiveSupport::MessageVerifier экземпляра. Этот подписанный идентификатор защищен от подделки, поэтому его безопасно отправлять в письмах или иным образом делиться с внешним миром. Кроме того, его можно настроить на истечение срока действия (по умолчанию срок действия не задается) и ограничить по конкретному назначению. Если дата истечения срока действия была превышена до вызова find_signed, идентификатор не найдёт соответствующую запись. Если назначение установлено, оно также должно совпадать.

Если вы случайно разослали подписанный идентификатор, который хотите отозвать раньше даты истечения срока действия (или, возможно, забыли установить дату истечения срока действия, имея это в виду!), вы можете использовать назначение, чтобы по существу версионировать signed_id, как показано ниже:

user.signed_id purpose: :v2

И затем измените вызовы find_signed так, чтобы требовалось это новое назначение. Любые старые подписанные идентификаторы, которые не были созданы с назначением, больше не найдут запись.

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

Spec-Zone.ru

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