在让用户使用 pyotp 创建新密码之前,如何实现基于 OTP 的验证?
How to implement OTP based verification before letting the user to create a new password using pyotp?
我对 Django 休息框架还很陌生。我正在为我的移动应用程序构建 API。
在忘记密码模块中,我有以下流程
- 要求用户输入手机
- 检查是否存在
- 如果存在 -> 发送 OTP
- 验证并让用户创建新密码。
但是在这种情况下,我想知道处理以下情况的方法。
当一个用户请求otp并等待验证时,同时另一个用户请求otp
这时候如何处理这两个用户呢?
我想到了
- 创建字典并将用户 ID 保存为键,将 otp 保存为值 views.py 以验证特定用户。
- 临时存储 otp 直到它验证。
对于这种情况,哪种方式是安全的?有什么替代方案?
你应该创建一个 table 看起来像这样的:
===== 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
然后在每个密码重置请求上在此 table 上创建一行,通过短信或电子邮件将生成的代码发送给用户,
然后在另一个端点上从用户那里接收代码并检查它(是否过期和之前使用过,属于这个用户等等)然后继续密码重置过程。
我对 Django 休息框架还很陌生。我正在为我的移动应用程序构建 API。 在忘记密码模块中,我有以下流程
- 要求用户输入手机
- 检查是否存在
- 如果存在 -> 发送 OTP
- 验证并让用户创建新密码。
但是在这种情况下,我想知道处理以下情况的方法。
当一个用户请求otp并等待验证时,同时另一个用户请求otp 这时候如何处理这两个用户呢? 我想到了
- 创建字典并将用户 ID 保存为键,将 otp 保存为值 views.py 以验证特定用户。
- 临时存储 otp 直到它验证。
对于这种情况,哪种方式是安全的?有什么替代方案?
你应该创建一个 table 看起来像这样的:
===== 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
然后在每个密码重置请求上在此 table 上创建一行,通过短信或电子邮件将生成的代码发送给用户,
然后在另一个端点上从用户那里接收代码并检查它(是否过期和之前使用过,属于这个用户等等)然后继续密码重置过程。