[英]Devise email encryption
我正在嘗試使用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
謝謝你的幫助!!
這是一個眾所周知的問題。
如果您查看了他們的存儲庫=> https://github.com/plataformatec/devise/issues/939
您可以看到該問題尤其與Devise初始化程序有關。 它需要有一個有效的電子郵件地址,否則它將無法正常工作。
因此,在config/initializers
找到devise.rb
,並將"please-change-me@config-initializers-devise.com"
屬性更改為有效的電子郵件地址。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.