gpt4 book ai didi

session - JWT 和每个用户一个(!) session /无并发 session

转载 作者:行者123 更新时间:2023-12-02 13:48:28 29 4
gpt4 key购买 nike

我们当前的应用使用 HTTP session ,我们希望将其替换为 JWT。

该设置仅允许每个用户进行一次 session 。这意味着:

  1. 用户在设备 1 上登录
    • 用户已在设备 1 上登录(已创建新 session )
  2. 用户在设备 2 上登录
    • 用户已在设备 2 上登录(已创建新 session )
    • 用户在设备 1 上登录( session 被破坏)

这是可行的,因为 session ID 和用户 ID 之间存在服务器端关系。

<小时/>

使用 JWT,我可以想象在用户数据库中有一些计数器,该计数器会随着每次登录而增加,即:

  1. 用户在设备 1 上登录
    • JWT token 签名包含 counter+1(并将新计数器保存到数据库)
  2. 用户在设备 2 上登录
    • JWT 的签名包含 counter+1,它会增加并保存到数据库。

现在,对于每个请求,我都必须检查传入的签名对于当前计数器值是否正确。

这在某种程度上使它变得有状态:(

但是... JWT 的好处之一是,无需访问任何数据库或 session 存储来验证 token 。

<小时/>

是否有其他解决方案来防止并发登录?也许无需数据库访问即可工作并保持无状态?

最佳答案

您已经非常接近解决方案了。

为此,您需要以下内容:
1. 代币中包含iat(代币发行时间)
2. 在某处存储用户上次登录的时间,例如在用户的个人资料中。

现在,在验证 token 时,请进行额外检查:iat(发布时间)必须等于或晚于上次登录时间。这会隐式地使旧 token 失效。

关于session - JWT 和每个用户一个(!) session /无并发 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28683698/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com