簡體   English   中英

設計電子郵件加密

[英]Devise email encryption

我正在嘗試使用ActiveSupport :: MessageEncryptor對電子郵件進行加密,但是存在一些問題。

  1. 登錄被拒絕(錯誤:無效的電子郵件或密碼。)
  2. 相同的電子郵件已注冊

我到目前為止所做的

  1. 我檢查了已加密和解密的記錄,並且電子郵件正確無誤。

  2. 我從'after_find'更改為'after_initialize'並得到錯誤。

    登錄時會顯示“ ActiveSupport :: MessageEncryptor :: InvalidMessage”。

  3. 我嘗試電子郵件確認設置​​並收到錯誤消息。

    登錄時,“收件人地址被拒絕:需要完整的地址”。


我猜

解密時間不好。

這意味着加密的電子郵件可能會被用於設計未解密的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM