鉴权token和refresh_token

2021-12-09  本文已影响0人  晓函

每次访问鉴权使用token,token使用aes对称加密,鉴权时直接解密得到uid,无需访问数据库验证,
鉴权token过期后,才需要使用refresh_token从数据库验证,并生成新的token
这样鉴权,2小时才需要访问一次数据库。
也更安全,如果鉴权token在传输中被盗,也2小时就过期。
这是更安全,更加节省性能的token鉴权方式。

==流程==

登陆

【服务端】生成鉴权token(2小时,不储存)和refresh_token(30天,储存到数据库)返回给app
【APP】保存token和refresh_token

token = aes.encrypt(key,uid+'_'+timestamp)
refresh_token = md5(uid+random)
return {'token':token,'refresh_token':refresh_token}

访问鉴权

【app】带上鉴权token

token=xxxxx

【服务端】直接解密鉴权token,无需访问数据库,节省性能

text = aes.decrypt(key,token)
infos = text.split('_')
uid = int(infos[1])
timestamp = int(infos[2])
判断uid是否正确
判断timestamp是否过期

鉴权token过期

【app】带上refresh_token,获取新的鉴权token

refresh_token=xxxxxx

【服务端】

从数据库验证refresh_token并延长过期时间,同时生成新的鉴权token

refresh_token也过期

重新走登陆流程

上一篇 下一篇

猜你喜欢

热点阅读