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