модуль ActiveRecord::SignedId
Подпись Active Record
Публичные методы класса
# File activerecord/lib/active_record/signed_id.rb, line 13 class_attribute :signed_id_verifier_secret, instance_writer: false
Устанавливает секрет, используемый для проверки идентификатора с подписью, когда Active Record используется вне Rails. Внутри Rails это автоматически устанавливается с помощью генератора ключей приложения Rails.
Публичные методы экземпляра
# 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.