Как я могу повторно использовать функцию шифрования паролей Authlogic в приложении Rails? - PullRequest
1 голос
/ 15 июня 2011

В моем приложении на Rails я периодически требую, чтобы пользователь повторно вводил свой пароль после определенного периода бездействия - как в случае с sudo в Linux.Мое приложение использует Authlogic для аутентификации и обработки хранения и шифрования паролей.

Мне нужен какой-то метод для шифрования пароля, который вводит пользователь, с использованием точно такой же схемы шифрования, которую использует Authlogic для шифрования паролей при проверке паролей во время аутентификации.Мне нужно 1) зашифровать пароль, который вводит пользователь, и 2) выполнить сравнение строк между этим шифрованием и зашифрованным паролем, хранящимся в базе данных для пользователя.

Где я должен поместить метод для выполнения этого шифрования?Вот некоторые идеи:

Идея 1 (в новом, пользовательском модуле)

module PasswordCryption
  include Authlogic::ActsAsAuthentic::Password

  encrypt_password(password)

  end
end

Идея 2 (в модели пользователя)

class User
  acts_as_authentic <---- makes Authlogic password encryption functionality available

  encrypt_password(password)

  end
end

1 Ответ

1 голос
/ 08 апреля 2014

Authlogic по умолчанию использует шифрование SHA512. Подсказка в том, что authlogic повторил функцию hexdigest 20 раз. Это решит вашу проблему:

digest = [raw_password, password_salt].join('')
crypted_password = 20.times { digest = Digest::SHA512.hexdigest(digest) }
...