1. 程式人生 > 程式設計 >Django專案中使用JWT的實現程式碼

Django專案中使用JWT的實現程式碼

1.requiremwnts:

  • Django版本:2.2
  • python版本:3.6
  • djangorestframework版本:3.1
  • djangorestframework-jwt版本:1.11
  • MySQL版本:5.7

注意:使用Django 2.1以上的版本,MySQL資料庫必須在5.5以上的版本。

2.新建專案

1)使用pycharm新建一個Django專案,我的專案名稱叫:django_jwt

2)使用語句 python manage.py startapp django_restframework_jwt新建一個名為django_restframework_jwt的app

3)在settings.py加入註冊程式碼:

INSTALLED_APPS = [
  'django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles',# 新新增
  'django_restframework_jwt','rest_framework',]

4)在settings.py中追加配置相關檔案:

REST_FRAMEWORK = {
  'DEFAULT_PERMISSION_CLASSES': (
    'rest_framework.permissions.IsAuthenticated',#必須有
  ),'DEFAULT_AUTHENTICATION_CLASSES': (
    'rest_framework_jwt.authentication.JSONWebTokenAuthentication',)
}
import datetime
JWT_AUTH = {
 # 指明token的有效期
 'JWT_EXPIRATION_DELTA': datetime.timedelta(days=1),}

5)settings.py中修改資料庫相關配置:

DATABASES = {
  'default': {
    'ENGINE': 'django.db.backends.mysql',# 資料庫的類別
    'NAME': 'test',# 資料庫的名字
    'HOST': '127.0.0.1',# 資料庫的ip
    'USER': 'root',# 使用者名稱
    'PASSWORD': '5201314',# 密碼
    'PORT': '3307'
  }
}

6)在自己的本地資料庫中新建一個叫test的資料庫;

7)安裝相關的依賴包:

pip install djangorestframework-jwt
pip install djangorestframework markdown Django-filter

8)在django_jwt/urls.py配置相關的路由:

from django.contrib import admin
from django.urls import path,include
from django_restframework_jwt.views import IndexView

urlpatterns = [
  path('admin/',admin.site.urls),path('jwt/',include('django_restframework_jwt.urls')),path('index/',IndexView.as_view(),name='index'),]

9)在django_restframework_jwt/views.py寫一個測試的檢視:

from django.shortcuts import render,HttpResponse
from rest_framework.views import APIView


class IndexView(APIView):
  """
  首頁
  """

  def get(self,request):
    return HttpResponse('首頁')

10)新建django_restframework_jwt/urls.py檔案,修改成下面的程式碼:

from django.urls import path
from rest_framework_jwt.views import obtain_jwt_token

app_name = 'jwt'
urlpatterns = [
  path('jwt_token_auth/',obtain_jwt_token),]

11)執行下面兩句命令:

python manage.py makemigrations
python manage.py migrate

在資料庫中建立相應的表。

12)建立一個超級使用者,用來測試token

python manage.py createsuperuser

13)執行專案,開啟Postman軟體,測試專案:

第一步測試成功,能得到token

接著使用token

token值的前面記得要加入JWT,還要加上一個空格。

能正常進入首頁,如果沒有在headers加入token,是不能正常訪問首頁的。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。