博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django 时区设置 redis token缓存策略
阅读量:6079 次
发布时间:2019-06-20

本文共 1465 字,大约阅读时间需要 4 分钟。

from django.utils.timezone import utc import datetime
datetime.datetime.utcnow().replace(tzinfo=utc)#生成utf格林尼治时间 datetime.timedelta(days=14) 生成14天的日期格式的数字
 
import redis import datetime from app01 import models from rest_framework.authentication import BaseAuthentication from rest_framework.exceptions import AuthenticationFailed from django.utils.timezone import utc redis_conn = redis.Redis(decode_responses=True) class TokenAuthenticate(BaseAuthentication): def authenticate(self, request): token = request.META.get("HTTP_TOKEN") rds_token = redis_conn.get(token,1)#这里给个1 防止客户端发送请求是如果不携带token时,redis_conn.get(token)会返回一个None; ret = models.Token.objects.filter(key=token, ).first()这里就会报错 if rds_token: print('缓存') return rds_token,token ret = models.Token.objects.filter(key=token, ).first() if ret : created_time = ret.created # token剩余有效期时间 period_of_validity = datetime.timedelta(days=14) + created_time - datetime.datetime.utcnow().replace( tzinfo=utc) if period_of_validity > datetime.timedelta(days=3):#假如token有效期大于3天,在redis中设置token过期时间为3天对应的秒数 redis_conn.set(token,ret.user.username,ex=10) elif period_of_validity < datetime.timedelta(days=3): redis_conn.set(token,ret.user.username, ex=int(period_of_validity.total_seconds()))#,假如剩余时间不足三天把剩余天数转换成剩余秒数 else: raise AuthenticationFailed('token过期')#假如已经没有剩余天数则直接报错,抛出token过期信息 print('数据库') return ret.user,token else:raise AuthenticationFailed('token过期')
 

转载于:https://www.cnblogs.com/16795079a/p/10765628.html

你可能感兴趣的文章
python2.6升级到2.7
查看>>
Unity SLua 如何调用Unity中C#方法
查看>>
MyBatis排序时使用order by 动态参数时需要注意,用$而不是#
查看>>
linux基础命令-查看系统状态-free -m以及top命令详解
查看>>
动态代理
查看>>
批量删除redis key
查看>>
被嫌弃的eval和with
查看>>
人工智能抢饭碗,未来怎么养活家庭?
查看>>
Python学习(7)--if语句
查看>>
top命令
查看>>
php无限极分类
查看>>
mysql数据库入门、进阶和提升(续一)
查看>>
Windows网络连接指示器,NCSI
查看>>
Android——Shape详解
查看>>
高性能专业上网行为管理设备WSG-500E开箱评测
查看>>
Win10中启用Linux Bash
查看>>
读【深度探索C++对象模型】【下】
查看>>
互引头文件的一种解决策略
查看>>
http://blog.51cto.com/itsoul/2047041
查看>>
发明了互联网和AI的美军机构长文预测:人类正与机器合二为一
查看>>