1

我将 django 版本 3.2.4 与 Django Rest Framework 结合使用。我还将https://github.com/jazzband/djangorestframework-simplejwt用于 JWT。

问题:我需要通过以下方式启用两因素身份验证。

  1. 用户使用他提交用户名和密码的端点。他收到了一个 jwt 令牌,该令牌在声明中包含了他需要输入哈希的验证码。同时,带有此代码的电子邮件会发送到他的电子邮件。
  2. 用户收到电子邮件后,他在另一个 enpoint 中发布了收到的验证码和他在上一步中收到的 jwt 令牌。
  3. 如果用户提交的代码与散列代码匹配,那么他将获得 jwt 令牌,该令牌将在后续请求中使用。

PS 欢迎任何其他与上述实现类似的想法。

4

1 回答 1

0

我解决这个问题的方法是向用户模型添加一个确认代码字段,并使用一个视图处理登录,有两种情况:

  • 第一种情况,我在请求中有用户名和密码,但没有代码,在检查用户名和密码后,我将手动创建并返回一个短暂的访问令牌,只返回没有刷新令牌(例如,它将在 3 分钟内过期),我会创建确认码,将其保存在数据库中并通过邮件或短信等方式发送...

  • 第二种情况,用户使用请求中的访问令牌发布收到的确认码,但没有用户名和密码,这样我可以确保用户有可用的访问令牌和确认码,然后我会返回访问令牌和刷新令牌像往常一样,在这一步中,我会在确认登录后将访问令牌列入黑名单。

于 2021-08-06T19:57:46.723 回答