使用 jwt auth 时是否可以获取用户会话?
Is it possible to get user sessions when using jwt auth?
"telegram" 等应用程序具有 "active sessions" 功能,您可以在其中查看和终止当前用户的会话。用session和cookies来存储用户session做类似的feature是没有问题的,但是用jwt怎么做呢?
服务器不存储有关 jwt 的任何信息,因此甚至无法获取活动会话列表。我正在考虑在用户登录时将附加信息存储在数据库中,这样我们就可以获得设备名称、类型等数据,并存储访问令牌。然后当用户想要终止特定会话时,以某种方式使所需的访问令牌无效。
制作此功能的正确方法是什么?
JWT 是自包含的,不需要服务器会话,但在某些情况下有助于在服务器上维护一些有关已发布和活动令牌的信息。
例如,在更改用户凭据、权限或简单地注销后设置撤销令牌的黑名单(您不能完全相信客户端会删除其数据)。不需要存储完整的令牌,只需分配一个唯一标识符即可。并且只在到期时间之前保留令牌的踪迹。
另请注意,在您的用例中,可以在用户交互期间更新令牌,因此与用户相关的任何数据都应附加到新令牌。如果你的token过期时间长,需要persistente
我不会调用“session”,因为它会导致与传统方法的混淆
"telegram" 等应用程序具有 "active sessions" 功能,您可以在其中查看和终止当前用户的会话。用session和cookies来存储用户session做类似的feature是没有问题的,但是用jwt怎么做呢?
服务器不存储有关 jwt 的任何信息,因此甚至无法获取活动会话列表。我正在考虑在用户登录时将附加信息存储在数据库中,这样我们就可以获得设备名称、类型等数据,并存储访问令牌。然后当用户想要终止特定会话时,以某种方式使所需的访问令牌无效。
制作此功能的正确方法是什么?
JWT 是自包含的,不需要服务器会话,但在某些情况下有助于在服务器上维护一些有关已发布和活动令牌的信息。
例如,在更改用户凭据、权限或简单地注销后设置撤销令牌的黑名单(您不能完全相信客户端会删除其数据)。不需要存储完整的令牌,只需分配一个唯一标识符即可。并且只在到期时间之前保留令牌的踪迹。
另请注意,在您的用例中,可以在用户交互期间更新令牌,因此与用户相关的任何数据都应附加到新令牌。如果你的token过期时间长,需要persistente
我不会调用“session”,因为它会导致与传统方法的混淆