2014-12-30 7 views
1

Мне нужно включить пароли восстановления/восстановления на сайте На флеше я хочу реализовать метод генерации токена, если пользователь сбросит pwd. Затем отправьте URL-адрес электронной почты пользователя (пример http://example.com/?token=huih23ui4h235h324h5oi) , чтобы подтвердить сброс pwd. После того, как пользователь подтвердит сброс pwd на этот url, я создаю новый pwd, обновляю DB и отправляю этот pwd пользователю.Восстановление и восстановление пароля на основе токенов Как сделать?

Как я могу это сделать? Могут существовать некоторые модули или библиотеки?

+0

Возможно, Flask Security (у него много функций, поэтому, возможно, вам больше, чем нужно, так как вам придется заменить вашу текущую систему входа)? https://pythonhosted.org/Flask-Security/ – Gohn67

+0

привет! Нет, это не вариант для замены системы входа. Мне нужно только реализовать сброс токена – 0script0

+0

Невозможно создать хеш с помощью [hashlib] python (https://docs.python.org/2/library/hashlib.html), сохранить его в своей базе данных и затем подтвердить хэш правильно ли изменить пароль? –

ответ

1

Используйте библиотеку ItsDangerous.

user_id = 1 
password = 'shh!' 

from itsdangerous import URLSafeSerializer 
s = URLSafeSerializer('super-secret-key') 
print s.dumps([user_id, password]) 
## WzEsInNoaCEiXQ.kt-4CV03gNXcN86xuRIgunbW0Sw 

Поэтому вы должны отправить им ссылку с этим токеном. Затем, когда они щелкают, вы его расшифровать:

print s.loads('WzEsInNoaCEiXQ.kt-4CV03gNXcN86xuRIgunbW0Sw') 
## [1, u'shh!'] 

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

+0

Очень спасибо! Это проще, чем мой метод. Может быть в будущем я буду использовать его dangerous – 0script0

2

Heyo!

@doobeh is right - itsdangerous является лучшей библиотекой для обработки этого материала напрямую.

Если вы ищете «более простое решение», вы можете проверить flask-stormpath. Он обрабатывает этот материал для создания токенов для вас, а также множество других вещей вокруг него (истекающие токены и т. Д.).

Для сброса пароля здесь то, что это будет выглядеть так:

  1. Пользователь инициирует сброс пароля на веб-странице.
  2. Stormpath отправляет запрос на сброс электронной почты пользователю (ваш адрес «от», пользовательский HTML и т. Д.) Со ссылкой + токен. Символ сброса, который является уникальным, одноразовым, и истекает, если не используется в течение 24 часов
  3. Пользователь нажимает на ссылку и приземляется на странице сброса
  4. Вы вытаскиваете токен из URL-адреса и проверяете Stormpath на проверку маркера
  5. Пользователь представляет новый пароль
  6. Stormpath рассылает успеха сброса сообщения (ваш «от» адреса, пользовательские HTML и т.д.)

Я автор колба-stormpath и работать на stomrpath, так что я «Немного предвзято, но это довольно хорошо для этого варианта использования.

+1

Также спасибо! Я прочитаю об этом расширении – 0script0

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