前言
JWT 是 json web token 的缩写, token的作用你应该已经了解,用于识别用户身份避免每次请求都需要验证
用来解决前后端分离时的用户身份验证
在传统的web项目中 我们会在form表单中设置隐藏字段来提交token信息
但是在前后端分离时,我们就无法像网页一样直接放在表单里,
需要前后端的配合才能完成token的验证
下面是使用itsdangerous模块实现JWT的生成与解析
服务器端代码: 文件:test/views.py from django.http import JsonResponse from test1 import jwt_tool # 登录接口 def login(req): username = req.POST.get("username") password = req.POST.get("password") # 模拟登录 if username == "jerry" and password == "123": # 用户标识id info = {"user_id":"10086"} #生成token token = jwt_tool.gen_token(info) # 返回数据 data = {"msg":"登录成功!","token":token,"code":1} return JsonResponse(data, safe=False) else: return JsonResponse({"msg":"登录失败!","code":-1}, safe=False,) # 用于请求json数据的接口 def get_some_data(req): try: # 获取token token = req.META["HTTP_TOKEN"] print(token) except: return JsonResponse({"msg": "缺少token!"}, safe=False) # 解析token获取用户身份信息 res = jwt_tool.parser_token(token) if res["code"] == 1: user_id = res["data"]["user_id"] return JsonResponse({"msg": "您的id为:%s" % user_id,"data":"一些数据!"}, safe=False) else: return JsonResponse({"msg": "身份验证失败 请重新登录!"}, safe=False) 文件:client_test.py import requests # 模拟登录 resp = requests.post("http://127.0.0.1:8000/login/",data={"username":"jerry","password":"123"}) res = resp.json() # 取出返回的token token = None if res["code"] == 1: print("登录成功!") token = res["token"] else: print("登录失败!") # 请求数据接口 resp1 = requests.get("http://127.0.0.1:8000/get_some_data/",headers={"token":token}) print(resp1.json())