【问题标题】:Devise email encryption设计电子邮件加密
【发布时间】:2019-06-27 11:38:56
【问题描述】:

我正在尝试使用 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

感谢您的帮助!!

【问题讨论】:

    标签: ruby-on-rails devise ruby-on-rails-5


    【解决方案1】:

    这是一个众所周知的问题。

    如果您查看他们的存储库 => https://github.com/plataformatec/devise/issues/939

    您可以看到问题出在 Devise 初始化程序上。它需要有一个有效的电子邮件地址,否则它将无法工作。

    所以在config/initializers 下找到devise.rb,并将"please-change-me@config-initializers-devise.com" 属性更改为有效的电子邮件地址。

    【讨论】:

    • 我的设计设置似乎是正确的,除了加密。我认为显示“收件人地址被拒绝:需要完全限定的地址”是因为我的加密电子邮件值在发送确认时未解密。
    猜你喜欢
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    • 2018-10-28
    • 2016-08-06
    • 2018-03-20
    • 2017-08-30
    • 2013-06-23
    • 1970-01-01
    相关资源
    最近更新 更多