Разработать шифрование электронной почты - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь зашифровать электронную почту, используя ActiveSupport :: MessageEncryptor, но возникла некоторая проблема.

  1. вход запрещен (ошибка: неверный адрес электронной почты или пароль.)
  2. то же самоеэлектронная почта зарегистрирована

Что я сделал до сих пор

  1. Я проверил свою запись, которая зашифрована и расшифрована, и электронная почтаправильно.

  2. Я сменил 'after_find' на 'after_initialize' и получил ошибку.

    'ActiveSupport :: MessageEncryptor :: InvalidMessage' при входе в систему.

  3. Я пытаюсь настроить подтверждение по электронной почте и получаю сообщение об ошибке.

    «Адрес получателя отклонен: нужен полный адрес» при входе в систему.


Моя догадка

Время расшифровки не подходит.

Это означает, что зашифрованная электронная почта может использоваться в 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

Спасибо за помощь !!

1 Ответ

0 голосов
/ 27 июня 2019

Это хорошо известная проблема.

А если взглянуть на их репозиторий => https://github.com/plataformatec/devise/issues/939

Вы видите, что проблема, в частности, связана с инициализатором Devise. У него должен быть действующий адрес электронной почты, иначе он не будет работать.

Таким образом, в config/initializers найдите devise.rb и измените свойство "please-change-me@config-initializers-devise.com" на действительный адрес электронной почты.

...