2016 - 2024

感恩一路有你

token为什要存在redis中 Jwt的token如何像session一样去延长时间?

浏览量:1971 时间:2021-03-13 03:47:54 作者:admin

Jwt的token如何像session一样去延长时间?

随着技术的发展和分布式web应用的普及,通过会话管理用户登录状态的成本越来越高。因此,它逐渐发展成为一种令牌方式来进行登录身份验证,然后利用令牌获取缓存在redis中的用户信息。随着JWT的出现,验证方法更加简单方便。它不使用redis缓存,而是直接基于令牌取出保存的用户信息,验证令牌的可用性,使单点登录更容易。

JWT通常包含两个令牌:访问令牌和刷新令牌。当用户通过登录等方式成功验证身份时,服务器会生成一个访问令牌和一个刷新令牌,并返回前端存储。两个令牌的过期时间都将在服务器上设置,但访问令牌的过期时间较短,而刷新令牌的过期时间较长。当当前端向服务器发送请求时,访问令牌将与请求一起发送到服务器,以验证请求者的身份。当服务器发现访问令牌已过期时,它将返回失败信息。此时,前端需要使用refresh token从服务器申请新的访问令牌。如果刷新令牌没有问题,服务器将生成一个新的访问令牌。如果刷新令牌已过期,则需要要求用户再次登录以验证其身份。

总之,JWT扩展是通过使用过期时间较长的刷新令牌重新申请新的访问令牌来实现的。当刷新令牌也已过期时,不可能延长时间。

jwt如何防止多端登录?

阻止多终端登录?为什么我们要通过JWT??

JWT只存储用户的基本信息。JWT的目的是减少数据库搜索并提高响应时间。

如果要阻止多终端登录,只需检查JWT是否成功,然后执行redis检查。

Redis群集。效率很高。Redis有一个称为bitmap的数据结构。命令是setbit key offset 1,这意味着将对应于键的二进制向量的偏移位设置为1。

例如,键对应的二进制是:000000,偏移对应的位置是第二个设置为1。是010000。

密钥表示唯一密钥,偏移量表示用户ID。如果登录成功,相应位置将设置为1,注销将设置为0。此命令在设置为1时只能成功一次

setbit islogin ID001 1 user 1 login成功

setbit islogin ID001 0 user 1 logoff

setbit islogin ID002 1 user 2 login成功

setbit islogin ID002 0 user 2脱机

分享老板的答案,这似乎有道理。

不要告诉我们是否使用redis。你必须告诉我们你为什么要使用redis。没有redis的业务怎么了?世界上没有免费的午餐。如果不直接使用头部缓存/NoSQL,可能会带来越来越严重的问题。

单个数据库的最大优点是易于实现事务,并由数据库本身保证。举个简单的例子,要下订单,需要扣除库存并插入订单条目。如果inventory和order都是数据库表条目,那么这个事务是无可挑剔的。如果库存在redis中,订单条目是mysql,通常需要先写redis,成功后再写数据库。如果您写数据库失败,需要回滚redis,如果由于网络或其他原因回滚失败,将再扣减一个存货。不要认为这些事情很容易解决。事务处理的复杂性远远超出您的想象。例如,当您编写mysql时,您在提交时就失去了连接。你无法判断提交是成功还是失败。你的redis是不是在倒退?

因此,当您引入一个新层时,您必须弄清楚您必须使用cache/NoSQL的目的以及您可以接受的一致性模型。否则,你就要出丑了。

token为什要存在redis中 jwt需要存redis吗 jwt redis

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。