Django中的JWT

本文介绍了Django中使用JWT(Json Web Token)的身份验证机制,对比了JWT与session的优缺点,并详细讲解了JWT的构成,包括头部、有效载荷和签名。还展示了在Django中的实际应用,包括后端安装配置和前端使用方法。
摘要由CSDN通过智能技术生成

一、什么是JWT(Json Web Token)

顾名思义,JWT就是Json Web Token,是在web应用中基于json的一种身份验证机制。
本质上就是把用户的信息通过base64编码后,加上一个头和一个签名,然后当作身份令牌发放给用户,使其能够通过这个token进行身份验证。

二、与session对比的优缺点

2.1 优点

1、session的用户信息全都是存在服务器上的,如果用户过多,会导致内存上的问题,而token不会
2、token扩展性好,session只能存储服务器上已有的结构性数据,而token是json,所以存啥都行
3、token可以在一定程度上防止csrf(原理是同源页面每次发请求都在请求头或者参数中加入Cookie中读取的Token来完成验证。CSRF只能通过浏览器自己带上Cookie,不能操作Cookie来获取到Token并加到http请求的参数中)
4、JWT可以跨语言支持,反正传的都是json,通用性很强

2.2 缺点

1、东西存太多了的话,会越来越大,每此访问都带着token,甚至可能让请求变成大头娃娃~(请求头比请求体大很多)
2、由于JWT只要签名合法,就是合法的,所以无法从自身层面上废除token,需要增加额外的逻辑来实现注销的功能
3、每次都要进行验证运算,消耗运算资源较大

三、JWT的构成

JWT分为三部分头部(header)、有效载荷(payload)、签名(signature)

3.1 头部

没啥好说的,就是告诉别人这是JWT,加密方式是xxx,一般长这样:

{
   
  'typ': 'JWT',
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值