Django Rest Framework(DRF) Json Web Token(JWT) 身份验证和登录过程

Posted

技术标签:

【中文标题】Django Rest Framework(DRF) Json Web Token(JWT) 身份验证和登录过程【英文标题】:Django Rest Framework(DRF) Json Web Token(JWT) Authentication and Login Process 【发布时间】:2018-02-12 05:07:18 【问题描述】:

我想为我的项目实现 JWT 身份验证,因为这似乎是所有身份验证过程中最简单的一个 - 但我不太了解用户如何使用 JWT-auth 实际登录。如果有人可以分享一些阅读材料或提供一些关于使用 JWT 登录用户的工作流程的见解,那将会很有帮助。 我自己的想法大致是这样的:

前端通过drf api向后端发送obtain_jwt请求 如果提供了用户名和密码,api 会返回一个 json 格式的令牌

从这里开始,我不明白接下来需要做什么。后端是否需要做任何其他事情来完成身份验证/登录过程?我还需要对 DRF 权限进行其他操作吗?

如果这完成了登录过程,那么还有其他事情让我感到烦恼。例如,我有一个 APIView LoginView,它有一个 post 方法来处理登录过程。那么,前端是否需要调用obtain_jwt函数来获取该函数,然后再对LoginView做一个post方法呢?或者有没有办法从那个 LoginView 返回 json-web-token?

如果有人可以为我回答这些问题或提供一些阅读材料来帮助我更好地了解此登录过程的整个工作流程,那将非常有帮助。谢谢。

编辑:我的登录过程正在处理 Facebook 登录 - 只是为了让查看者知道:)

【问题讨论】:

【参考方案1】:

向您解释后并没有那么复杂。一般工作流程是:

客户端通过 javascript(ajax) 通过 POST 请求发送用户名和密码。 DRF 接收它,进行身份验证并将令牌以 json 格式返回给客户端。 客户端接收令牌并存储它。 token 存储在 ajax setup 的 header 中,因此该应用中所有后续调用的 header 中都有 token。 现在只需进行常规 api 调用,通过 DRF 读取和接受的标头自动提交身份验证。

见this。

【讨论】:

感谢您的回复:D 非常感谢 没问题。乐意效劳。你能接受答案吗? ;)

以上是关于Django Rest Framework(DRF) Json Web Token(JWT) 身份验证和登录过程的主要内容,如果未能解决你的问题,请参考以下文章

django-rest-framework(drf入门)

DRF(Django REST Framework)框架

是否过滤 Django Rest Framework (DRF) 中的代码示例优化问题

如何使 DRF ( Django-REST-Framework) 令牌保持不变,使其在每次页面刷新后不会丢失?

Django 学习之Django Rest Framework(DRF)

Django Rest Framework (DRF) 中的 add_error(fieldname, ...)