所以我正在学习如何使用Django和DRF,我在Django上创建了一个登录和注册页面。Login and Register user view与他们自己的html页面但是,我不想使用正常的身份验证在Django和想使用Jwt令牌来验证我已经下载了它,并可以使用API/令牌和api/令牌/刷新获得访问和刷新令牌,但我似乎无法找到一种方法来使用它在我已经建立的登录和注册页面进行身份验证
所以我正在学习如何使用Django和DRF,我在Django上创建了一个登录和注册页面。Login and Register user view与他们自己的html页面但是,我不想使用正常的身份验证在Django和想使用Jwt令牌来验证我已经下载了它,并可以使用API/令牌和api/令牌/刷新获得访问和刷新令牌,但我似乎无法找到一种方法来使用它在我已经建立的登录和注册页面进行身份验证
1条答案
按热度按时间mzillmmw1#
首先安装Django Rest Framework:
添加到已安装应用设置中:
config/settings.py
为了在我们的项目中实现JWT auth,我们将使用djangorestframework_simplejwt。安装它:
然后,告诉DRF我们要使用的身份验证后端:
config/settings.py
这里有几个简单JWT的设置变量,可以在设置中自定义:
config/settings.py
如果ROTATE_REFRESH_TOKENS设置为True,则将返回一个新的刷新令牌沿着访问令牌。如果BLACKLIST_AFTER_ROTATION设置为True,则提交到刷新视图的刷新令牌将被添加到黑名单中。您需要将'rest_framework_simplejwt.token_blacklist'添加到已安装应用列表中,才能让BLACKLIST_AFTER_ROTATION设置生效。让我们这样做:
config/settings.py
第三方应用
最后,运行以下命令来应用应用的迁移:py manage.py migrate现在,我们需要在用户注册/登录时创建访问和刷新令牌。在下一节中,我们将添加序列化程序和视图来完成此任务。
用户注册和登录端点在用户应用程序中创建一个名为www.example.com的文件serializers.py,并添加以下内容:
users/serializers.py
请注意,我们还为概要文件创建了一个序列化程序类。然后在views.py
users/views.py
上述观点不言自明。基本上,用于用户身份验证的视图使用简单JWT的RefreshToken类来生成刷新和访问令牌并将其发送给客户端。此外,注销视图将刷新令牌列入黑名单。其他视图用于获取或更新用户及其简档。现在,让我们在URL中挂钩我们的视图。
转到config/urls.py并添加用户应用程序URL:
config/urls.py
在用户应用程序中,创建一个名为www.example.com的文件urls.py,并按如下所示添加端点:
users/urls.py
请注意,令牌/刷新端点将用于获取新的访问和刷新令牌。