В основном, как вопрос спрашивает.Должен ли я принимать зашифрованный пароль с помощью AuthLogic?
AuthLogic документация для verify_password_method
состояний:
имя метода в вашей модели, используемой для проверки пароля. Это должен быть метод экземпляра. Он также должен быть готов принять сырой пароль и платный пароль.
Я хотел бы поддержать это, поскольку он позволяет мне поддерживать текущее поведение маскировки нашей системы, не сохраняя пароли с открытым текстом, как мы были в прошлом. Однако мне кажется, что простое сравнение строк с crypted_password
в базе данных так же плохо, как хранение обычных паролей обычного текста.
Я что-то упустил, или есть какой-то другой способ принять зашифрованный пароль в AuthLogic?
Для справки, это, как я собирался написать valid_password?
метод:
def valid_password?(password, check_from_database = nil)
if password == self.crypted_password
true
else
super(password, check_from_database)
end
end
Для чего используется 'valid_password?'? – juanpastas
'valid_password?' - метод по умолчанию, используемый 'verify_password_method', чтобы определить, введен ли пользователь правильный пароль. Базовый метод, вызываемый 'super', можно найти в строке 248 здесь: https://github.com/binarylogic/authlogic/blob/master/lib/authlogic/acts_as_authentic/password.rb Таким образом, реализация по умолчанию принимает открытый текст пароль и сравнивает его с хешированным паролем. –