【发布时间】:2019-06-27 11:38:56
【问题描述】:
我正在尝试使用 ActiveSupport::MessageEncryptor 加密电子邮件,但出现了一些问题。
- 登录被拒绝(错误:电子邮件或密码无效。)
- 注册了同一个邮箱
到目前为止我做了什么
-
我检查了我的加密和解密记录,电子邮件是正确的。
-
我从“after_find”更改为“after_initialize”并出现错误。
'ActiveSupport::MessageEncryptor::InvalidMessage' 当我登录时。
-
我尝试电子邮件确认设置并收到错误。
'收件人地址被拒绝:我登录时需要完全限定的地址'。
我的猜测
解密时机不好。
这意味着加密的电子邮件可能会用于未解密的设计 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
感谢您的帮助!!
【问题讨论】:
标签: ruby-on-rails devise ruby-on-rails-5