Django Academy · บทเรียน

การยืนยันตัวตนด้วยโทเค็นและ JWT

ยืนยันตัวตนไคลเอนต์ API อย่างปลอดภัย

บทเรียน 3 จาก 413 ขั้นตอน

การยืนยันตัวตนด้วยโทเค็นและ JWT เป็นบทเรียน Django Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Django Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Django Academy มีบทเรียนทั้งหมด 4 บทเรียน

เอพีไอต้องการการยืนยันตัวตนแบบไร้สถานะ

เบราว์เซอร์ใช้เซสชัน แต่ไคลเอ็นต์เอพีไอมักไม่มีคุกกี้ การยืนยันตัวตนด้วยโทเค็นช่วยให้ไคลเอ็นต์ยืนยันตัวตนในทุกคำขอแทน

โทเค็นทำงานอย่างไร

ผู้ใช้เข้าสู่ระบบครั้งเดียวและได้รับสตริงโทเค็น จากนั้นส่งโทเค็นไปกับทุกคำขอ และ DRF จะเชื่อมโยงโทเค็นกลับไปยังผู้ใช้ที่ถูกต้อง

เปิดใช้งาน TokenAuthentication

เพิ่มแอป authtoken และเปิดใช้ TokenAuthentication เพื่อให้ DRF รู้ว่าต้องอ่านโทเค็นจากคำขอขาเข้า

INSTALLED_APPS += ['rest_framework.authtoken']

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.TokenAuthentication',
    ],
}

ออกโทเค็น

DRF มีมุมมอง obtain_auth_token ที่พร้อมใช้ เพียงส่งชื่อผู้ใช้และรหัสผ่านไปยังมุมมองนี้ แล้วระบบจะส่งโทเค็นของผู้ใช้นั้นกลับมา

from rest_framework.authtoken.views import obtain_auth_token

urlpatterns = [
    path('api-token-auth/', obtain_auth_token),
]

ส่งโทเค็น

ไคลเอ็นต์ใส่โทเค็นไว้ในส่วนหัว Authorization โดยเติมคำว่า Token ไว้ข้างหน้าในทุกการเรียกใช้ที่มีการป้องกัน 🔑

Authorization: Token 9944b09199c62bcf9418ad846dd0e4

ข้อจำกัดของโทเค็นแบบเรียบง่าย

โทเค็นของ DRF ไม่มีวันหมดอายุและเป็นเพียงการค้นหาข้อมูลในฐานข้อมูล สำหรับระบบขนาดใหญ่ JWT จะเพิ่มวันหมดอายุและข้อมูลที่อยู่ในตัวเอง

JWT มีข้อมูลอะไรบ้าง

JSON Web Token คือสตริงที่มีลายเซ็นและเก็บข้อมูลอ้างสิทธิ์ เช่น รหัสผู้ใช้และเวลาหมดอายุ เซิร์ฟเวอร์จึงเชื่อถือได้โดยไม่ต้องค้นฐานข้อมูล

เพิ่ม SimpleJWT

ติดตั้ง djangorestframework-simplejwt และลงทะเบียนคลาสการยืนยันตัวตนของแพ็กเกจนี้ เพื่อเปลี่ยนจากโทเค็นทั่วไปมาใช้ JWT

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

โทเค็นการเข้าถึงและการรีเฟรช

SimpleJWT มอบโทเค็นสองแบบ ได้แก่ access token ที่มีอายุสั้นสำหรับส่งคำขอ และ refresh token ที่มีอายุยาวกว่าเพื่อขอ access token ใหม่

ปลายทางสำหรับเข้าสู่ระบบด้วย JWT

เชื่อมต่อ TokenObtainPairView เพื่อเข้าสู่ระบบ และ TokenRefreshView เพื่อขอต่ออายุ เพียงเท่านี้กระบวนการทำงานด้วย JWT ก็พร้อมใช้

from rest_framework_simplejwt.views import (
    TokenObtainPairView, TokenRefreshView)

urlpatterns = [
    path('token/', TokenObtainPairView.as_view()),
    path('token/refresh/', TokenRefreshView.as_view()),
]

ส่งโทเค็นแบบ Bearer

ไคลเอ็นต์ JWT ใช้รูปแบบ Bearer ในส่วนหัว Authorization แทนคำว่า Token ที่โทเค็นของ DRF ใช้ 🎟️

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

ตรวจสอบอย่างรวดเร็ว

มีความแตกต่างสำคัญหนึ่งประการที่แยกโทเค็นของ DRF ออกจาก JWT

สรุป: การพิสูจน์ตัวตน

คุณได้เรียนรู้การยืนยันตัวตนของไคลเอ็นต์เอพีไอด้วยโทเค็นของ DRF เพื่อความเรียบง่าย และด้วย JWT เพื่อรองรับวันหมดอายุและการขยายระบบ โดยทั้งสองแบบส่งผ่านส่วนหัว Authorization 🎉

เริ่มต้นได้ฟรี

เรียนรู้ Python ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
30
บทเรียน
120

คำถามที่พบบ่อย

บทเรียน “การยืนยันตัวตนด้วยโทเค็นและ JWT” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การยืนยันตัวตนด้วยโทเค็นและ JWT” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Django Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Django Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การยืนยันตัวตนด้วยโทเค็นและ JWT”

ยืนยันตัวตนไคลเอนต์ API อย่างปลอดภัย คุณปฏิบัติ Django Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Django Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Django Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การยืนยันตัวตนด้วยโทเค็นและ JWT” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Django Academy นี้ได้ไหม

ได้ บทเรียน Django Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ModelViewSet และเราเตอร์
  2. สิทธิ์และการจำกัดความถี่
  3. การยืนยันตัวตนด้วยโทเค็นและ JWT
  4. การกรอง การค้นหา และการแบ่งหน้า
← กลับไปที่ Django Academy