Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การใช้ Djoser ใน Django สำหรับการยืนยันตัวตนด้วย Token โดยไม่ต้องใช้ Views


Djoser เป็นไลบรารีการยืนยันตัวตนที่เรียบง่ายสำหรับ Django ใช้สร้าง Token สำหรับการยืนยันตัวตน โดย Token นี้สร้างจาก 3 ฟิลด์: username, email และ password ทำงานเฉพาะ POST request แต่สามารถเพิ่ม Frontend ได้

ตัวอย่าง

สร้างโปรเจกต์ Django และแอป ชื่อ "DjoserExample" และ "myapp"

ติดตั้งแพ็กเกจ 2 ตัว:

pip install djoser
pip install djangorestframework

ใน settings.py เพิ่มบรรทัดต่อไปนี้:

INSTALLED_APPS = [
    # ด้านล่างแอปอื่นๆ
    'myapp',
    'rest_framework',
    'rest_framework.authtoken',
    'djoser'
]
# ตัวแปร template ด้านล่าง
REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.TokenAuthentication',
    ),
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated',
    ]
}
DJOSER = {
    "USER_ID_FIELD": "username"
}

เพิ่ม djoser และ restframework เป็นแอป ตั้งค่า authentication backend ของ REST framework และสำหรับ djoser กำหนด User ID field (ฟิลด์ดัชนี)

ใช้ฐานข้อมูล User Authentication เริ่มต้นของ Django จึงไม่จำเป็นต้องมีแอปเพิ่มเติม

ไปที่ urls.py ของโปรเจกต์ และเพิ่ม:

from django.contrib import admin
from django.urls import path, include, re_path
urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('myapp.urls')),
    path(r'api/v1/', include('djoser.urls')),
    path(r'api/v1/token/login', include('djoser.urls.authtoken'))
]

กำหนด djoser admin url และ djoser authentication backend

รันคำสั่งต่อไปนี้บนเทอร์มินัล:

python manage.py makemigrations
python manage.py migrate
python manage.py runserver

เอาต์พุต

ที่ https://127.0.0.1:8000/api/v1/users/ → สร้างผู้ใช้

ที่ https://127.0.0.1:8000/api/v1/token/login → สร้าง Token ด้วย username และ password