2017-01-12 2 views
0

Я реализую api для существующего флеш-приложения, логин был создан с помощью Flask-User, однако теперь мне нужно вручную искать пользователя и сопоставлять пароль для аутентификации.Как вручную сопоставить имя пользователя и пароль для пользователей, созданных с помощью Flask-User

Проблема заключается в том, что я не знаю, как воссоздать хэш пароля, чтобы сравнить с паролем Flask-User, хранящимся в базе данных.

В основном потому, что источник Колба-пользователя в https://github.com/lingthio/Flask-User/blob/master/flask_user/passwords.py упоминает соль, однако из столбцов базы данных у меня есть:

sqlite> pragma table_info(user); 
0|id|INTEGER|1||1 
1|username|VARCHAR(50)|1||0 
2|password|VARCHAR(255)|1|''|0 
3|reset_password_token|VARCHAR(100)|1|''|0 
4|email|VARCHAR(255)|1||0 
5|confirmed_at|DATETIME|0||0 
6|is_active|BOOLEAN|1|'0'|0 
7|first_name|VARCHAR(100)|1|''|0 
8|last_name|VARCHAR(100)|1|''|0 

Там нет соли. Итак, вопрос в том, как я могу генерировать из пароля открытого текста хэш, который я могу сравнить с хэшами, созданных Flask-User. Вот некорректный хеш выборки;

$2a$12$84F1dCPN1bVYEzPswDvgZu5ma1Xk5lNepvX/X9kKFYj8Q6Dy6j95q 
+1

Почему вы хотите сделать это вручную, вместо того, чтобы использовать api-флип-приложение для этого? –

ответ

1

Возможно, попробуйте функцию user_manager.hash_password. https://pythonhosted.org/Flask-User/api.html

+0

Из ссылки я могу даже использовать 'user_manager.verify_password (password, user)', каково было бы значение пользователя? Имя пользователя или пользовательский объект, если последний, как я могу получить объект пользователя? Благодарю. – Jonathan

+0

Я бы предположил, что это объект пользователя, но вам придется дважды проверить. И да, я бы рекомендовал использовать 'verify_password', а не писать логику самостоятельно. Что касается безопасности, лучше, чтобы инфраструктура выполняла всю работу, так как она была протестирована и проверена. –

Смежные вопросы