jwt什么意思 Jwt的token如何像session一样去延长时间?
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 offline
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。