การยืนยันตัวตนด้วยโทเค็นและ JWT
ยืนยันตัวตนไคลเอนต์ API อย่างปลอดภัย
การยืนยันตัวตนด้วยโทเค็นและ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ModelViewSet และเราเตอร์
- สิทธิ์และการจำกัดความถี่
- การยืนยันตัวตนด้วยโทเค็นและ JWT
- การกรอง การค้นหา และการแบ่งหน้า