JWT复习
token是json web token (鉴权), 主要是解决会话保持.
cookie和session相同点: 都是k/v格式
cookie:
1. 保存在浏览器(客户端),
1. Cookie 是不安全的,是明文
1. 默认有效期14天, 默认大小4k
sesesion:
-
sessionid 对应的数据保存在服务端, sessionID是服务端生成,返回给客户端,让浏览器保存, 一般浏览器会保存在cookie中(key:value)
-
相对安全, 加密的
-
Session 是根据设定的, 默认无限制,根据服务器的性能决定
使用session时会有一个session共享的问题? 可以使用redis实现数据共享, 但是需要配置; 6亿**1k=600g 500m
-
TOKEN
-
header:
包含是: token的标识, 要使用的加密算法(HS256)
-
Payload(载荷)
用户信息, 但是不能存放敏感信息(比如密码)
-
签证
用来加密的, 把前两部分使用base64编码后的字符串,进行拼接然后再使用header中声明的加密算法进行加密, 加密时还需要一个随机数(“盐”,salt)把第三部分和前两部分再次加密成第三部分, 然后再和前两部分进行拼接
-
class Order(models.Model):
order_id = model.IntegerField(primary_key=Ture)
pay_status = models.CharField(max_length=10, choices=((0, '待收款'), (1, '待发货'), (2, '待收货'), (3, '待评价'), (4, '已完成'),(5,'已取消订单'), verbose_name='支付状态')
class OrderView(ApiView):
def put(self, request):
"""修该订单状态"""
# 1.获取订单的id
order_id= request.data.get('order_id')
# 2. 根据订单id 进行状态的修改
Order.object.filter(order_id=order_id, pay_status=0).update(pay_status=5)
1. 为什么使用celery 异步任务发送短信验证码
因为现在的代码是同步阻塞的, 若访问人说过多,会阻塞导致注册/登录不能正常执行.
2. 如何使用celery
# 注意celery 一定要和eventlet 版本匹配否则会出错
pip install celery==4.4.7
pip install eventlet==0.26.1
3. celery 介绍和核心模块
- 客户端: 产生任务的
- 消息队列: 存放要执行的任务
- 调度器,分配任务给中间人
- 中间人把任务分配给worker
- worker去执行任务,把任务执行结果存放到backend里面