Я пытаюсь зашифровать электронную почту, используя ActiveSupport :: MessageEncryptor, но возникла некоторая проблема.
- вход запрещен (ошибка: неверный адрес электронной почты или пароль.)
- то же самоеэлектронная почта зарегистрирована
Что я сделал до сих пор
Я проверил свою запись, которая зашифрована и расшифрована, и электронная почтаправильно.
Я сменил 'after_find' на 'after_initialize' и получил ошибку.
'ActiveSupport :: MessageEncryptor :: InvalidMessage' при входе в систему.
Я пытаюсь настроить подтверждение по электронной почте и получаю сообщение об ошибке.
«Адрес получателя отклонен: нужен полный адрес» при входе в систему.
Моя догадка
Время расшифровки не подходит.
Это означает, что зашифрованная электронная почта может использоваться в devise gem, но не расшифрована.
Мой код
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
before_save :encrypt_value
after_find :decrypt_value
def encrypt_value
self.email = encrypt(self.email)
end
def decrypt_value
self.email = decrypt(self.email) if email.present?
end
def encrypt(value)
@SECURE = 'HOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGE'
@CIPHER = 'aes-256-cbc'
crypt = ActiveSupport::MessageEncryptor.new(@SECURE, @CIPHER)
crypt.encrypt_and_sign(value)
end
def decrypt(value)
@SECURE = 'HOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGE'
@CIPHER = 'aes-256-cbc'
crypt = ActiveSupport::MessageEncryptor.new(@SECURE, @CIPHER)
crypt.decrypt_and_verify(value)
end
end
Спасибо за помощь !!