如何使用 Django 使用 JWT 身份验证?

今天给大家举个使用Django Rest Framework进行jwt认证的例子。
让我们谈谈使用 Django Rest Framework 的 jwt 身份验证示例。

我们将通过使用 django rest 框架提供一个 django jwt 身份验证示例来帮助您。您可以查看 django jwt 身份验证的示例。只需要几个简单的步骤就可以在Django rest框架中完成JWT认证。

JSON 对象可用于利用称为 JSON Web 令牌的开放标准在各方之间安全地传输数据。JWT 用于用户和提供者的无状态身份验证程序,这意味着会话在客户端维护,而不是存储在服务器上。在这里,我们将使用 Django 来实现 JWT 认证机制。

第 1 步:创建项目

在这一步中,我们将使用 django-admin 创建一个新的 django 项目。返回命令行界面并运行以下命令:

 django-admin startproject example 

第 2 步:创建应用

现在我们将创建一个名为core的应用程序来存储帖子名称列表。我们故意保持基本的东西。使用Control+c停止本地服务器并使用startapp命令创建这个新应用程序。

 python manage.py startapp core 

第 3 步:安装所需的库

首先让我们安装 django 和 djangorestframework_simplejwt,它们是必需的 Python 库。

 pip install django 
 pip install djangorestframework_simplejwt 

第 4 步:更新 setting.py

在这一步中,我们需要在 settings.py 文件中做两件事,一是我们安装的应用程序名称将以下行添加到您的 settings.py 文件中:

接下来需要在settings.py文件中添加如下: example/settings.py

....
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'core',
]

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ],
}

第 5 步:创建视图

在这一步中,我们需要创建视图来执行对数据库的获取记录。打开 core/views.py 文件并添加:
core/views.py

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.permissions import IsAuthenticated


class HelloView(APIView):
    permission_classes = (IsAuthenticated, )

    def get(self, request):
        content = {'message': 'Welcome to Tuts-Station.com'}
        return Response(content)

第 6 步:创建 URL

在本节中,我们需要 apis 应用程序中的 urls.py 文件,但是 Django 不会使用 startapp 命令为我们创建一个文件。使用文本编辑器创建core/urls.py并粘贴下面的代码。 core/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('hello/', views.HelloView.as_view(), name ='hello'),
]

接下来,我们将要求修改 urls.py 您的根 preoject 文件夹让更新文件。
example/urls.py

from django.urls import path, include
from rest_framework_simplejwt import views as jwt_views

urlpatterns = [
    path('api/token/',
        jwt_views.TokenObtainPairView.as_view(),
        name ='token_obtain_pair'),
    path('api/token/refresh/',
        jwt_views.TokenRefreshView.as_view(),
        name ='token_refresh'),
    path('', include('app.urls')),
]

运行服务器

在此步骤中,我们将运行本地开发服务器来使用我们的应用程序,而无需将其部署到 Web。

 python manage.py runserver 

JWT 只是一个授权令牌,应该包含在所有请求中:

curl http://127.0.0.1:8000/hello/ -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjY5MjEwMzg4LCJqdGkiOiI2MjY2N2RkOWIyZmE0N2M4OWRmNjU0ZTVlZGYwYmNjNCIsInVzZXJfaWQiOjF9.Osp5gtBadiAoRi8_0ed2os2oQLWkPyHU34gjlbS2UC0'

通过将用户名和密码交换为访问令牌和刷新令牌,可以获得 JWT。
Postman POST请求: 

Postman GET请求: 

我希望它能帮助你……

发表评论

邮箱地址不会被公开。 必填项已用*标注