Django下JWT的使用
前言
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 == "":
- # 用户标识id
- info = {"user_id":""}
- #生成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":""})
- 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())
Django下JWT的使用的更多相关文章
- python+Django 下JWT的使用
figure:first-child { margin-top: -20px; } #write ol, #write ul { position: relative; } img { max-wid ...
- django下的ckeditor 5.0 文本编辑器上传功能。
完整的后台界面怎么可以没有文本编辑器,但是django的admin界面很疑惑,没有自带文本编辑器,好在网上有不少成型的库可以用 我用的是ckeditor编辑器,安装和配置我引用别人的博客 这篇博客配置 ...
- django下进行项目的部署
-------------------Django下进行对应的服务器配置1.服务器购买 本人在阿里云购买了一个服务器,操作系统为windows server2008/Linux(ubuntu) 2.服 ...
- django restframework jwt
既然要来学习jwt(json web token),那么我们肯定是先要了解jwt的优势以及应用场景--跨域认证. $ pip install djangorestframework-jwt 传统coo ...
- Python学习---django下的cookie操作 180201
什么是Cookies 什么是Cookies cookies设置的原因: 1. http请求的无记忆性: 2.加快访问速度 3. 减少服务器压力 cookies特点: cookies保存在客户端浏览器 ...
- django下的csrf防御机制
CSRF 1.什么是CSRF? CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写 ...
- Django下MEDIA_ROOT, MEDIA_URL, STATIC_ROOT, STATIC_URL解惑
Django中settings中的四个设置参数的一些故事: MEDIA_ROOT, MEDIA_URL, STATIC_ROOT, STATIC_URL 1.MEDIA_ROOT与MEDIA_URL ...
- Django基于JWT实现微信小程序的登录和鉴权
什么是JWT? JWT,全称Json Web Token,用于作为JSON对象在各方之间安全地传输信息.该信息可以被验证和信任,因为它是数字签名的. 与Session的区别 一.Session是在服务 ...
- [Django]下拉表单与模型查询
前言:本文主要针对自定义下拉表单制作,下拉表单的内容是取至于数据库,即动态实现下拉表单 正文: 动态实现下拉表单有两种方法: 一.自己手动写 html 模板中的 <form ...> &l ...
随机推荐
- Linux下进程间通信方式——pipe(管道)
每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程A把数据从用户空间拷到内核缓冲区,进程B再从内核缓冲区把 ...
- 洛谷P3084 [USACO13OPEN]照片
题目 \(DP\) 设状态\(dp[i]\)为\(i\)位置放了斑点牛,前\(i\)个位置能得到的最多的牛. 有方程\(dp[i]=max(dp[j]+1,dp[i])\),而我们并不知道什么\(j\ ...
- snmpwalk 简介
概述 SNMPWALK是一个通过SNMP GET-NEXT类型PDU,实现对目标AGENT的某指定MIB分支信息进行完整提取输出的命令工作. 命令⾏ snmpwalk [选项] agent [oid] ...
- virtualbox安装问题总结
还是老问题 重点重点: https://blog.csdn.net/Loisleen/article/details/84975165#1install_the_gcc_make_perl_packa ...
- java web开发入门三(Hibernate)基于intellig idea
Hibernate 1.开发流程 项目配置好后的结构: 1.下载源码: 版本:hibernate-distribution-3.6.0.Final 2.引入hibernate需要的开发包(3.6版本) ...
- 日志篇 随着win10更新...
随着win10更新到最新..我发现电脑出了点状况.. 一 是电脑睡眠主机不关闭...然后用了 https://jingyan.baidu.com/article/cb5d6105d76343005c2 ...
- Spring JdbcTemplate使用别名传参(NamedParameterJdbcTemplate)
原文地址http://www.voidcn.com/article/p-cwqegtpg-hx.html 在使用JdbcTemplate时,一般传参都是用的?来绑定参数,但是对于某种情况就不适用了,例 ...
- linux 远程文件复制和拉取
基本命令格式 上传 scp -r myfilder tiantian@192.168.168.221:/home/tiantian/temp/ 复制本地文件到远程/home/tiantian/te ...
- Hbase操作集锦
一.Hbase架构与理解 Hbase架构大致如下,图片取自https://www.cnblogs.com/linkworld/p/10963910.html. 二.Hbase shell操作 创建Hb ...
- Isilon的WebUI上指定跨时区时间的小问题
Isilon的WebUI的界面长这样: 假设我们在中国,也就是GMT+8的时区,我们想修改一个远在美国的Isilon cluster的时间. 你会发现,界面上用于指定时间的地方应该填写的不是下面选择的 ...