#python #django #django-rest-framework #django-views #forgot-password
Вопрос:
Я очень новичок в рамках Django rest. Я создаю API для своего мобильного приложения. В модуле «Забыли пароль» у меня есть следующий поток
- Попросите пользователя ввести мобильный
- проверьте наличие
- Если существует — > отправить OTP
- Подтвердите и позвольте пользователю создать новый пароль.
Но в этом случае я хотел бы знать, как справиться с приведенной ниже ситуацией.
Когда один пользователь запрашивает otp и ждет его подтверждения, в то время как другой пользователь запрашивает OTP В это время, как обращаться с обоими пользователями? Я подумал о
- создание словаря и сохранение идентификатора пользователя в качестве ключа и otp в качестве значения в views.py для проверки конкретного пользователя.
- временно храните otp до тех пор, пока он не подтвердится.
Какой безопасный способ и какая альтернатива для такого сценария?
Ответ №1:
Вы должны создать таблицу, которая будет выглядеть следующим образом:
===== UserOTP =====
user: foreign-key to user
code: CharField, random generated code here (or token)
create_date: auto-fill created datetime
used_date: nullable datetime field
Затем при каждом запросе на сброс пароля создайте строку в этой таблице, отправьте сгенерированный код пользователю по SMS или электронной почте,
А затем на другой конечной точке получите код от пользователя и проверьте его (на срок действия и использовался ранее, принадлежит этому пользователю и т. Д.), Затем продолжите процесс сброса пароля.