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 就是一张“加密过的临时身份证”:
登录/注册时发给你,前端每次请求都带上,后端用签名验证即可,无需再查数据库密码