1.創建應用
python manage.py startapp dtoken
2.注冊應用
settings.py中注冊
3.匹配路由
4.編寫登錄功能視圖函數
import hashlib
import json
import timeimport jwt
from django.conf import settings
from django.http import JsonResponse
from user.models import UserProfile# Create your views here.
def tokens(request):"""登錄功能視圖邏輯1.獲取請求題的數據[用戶名、密碼]2.判斷用戶名是否存在3.判斷密碼是否正確4.簽發token5.組織數據返回"""data = json.loads(request.body)username = data.get('username')password = data.get('password')# 判斷用戶名try:user = UserProfile.objects.get(username=username)except Exception as e:print('get user error:', e)return JsonResponse({'code': 10200, 'error': 'username is wrong'})# 判斷密碼if user.password != hashlib.md5(password.encode()).hexdigest():return JsonResponse({'code': 10201, 'error': 'password is wrong'})# 簽發tokentoken = make_token(username)result = {'code': 200,'username': username,'data': {'token': token},'carts_count': 0}return JsonResponse(result)def make_token(username, expire=24*3600):payload = {'exp': int(time.time()) + expire,'username': username}return jwt.encode(payload, settings.SECRET_KEY, algorithm='HS256')
5.一些疑問
- 注冊 & 登錄為什么要發 token?
token = “免密身份證”,讓前后端在 無狀態、無會話 的前提下安全地知道“你是誰”
- 注冊
創建賬號后順手發 token,用戶立即免登錄進入系統,體驗更好
- 登錄
驗證賬號密碼成功后發 token,后續所有 API 都 “帶 token 來”,后端 “看 token 即可”,不再做數據庫密碼校驗
Token 就是一張“加密過的臨時身份證”:
登錄/注冊時發給你,前端每次請求都帶上,后端用簽名驗證即可,無需再查數據庫密碼