“电报”等应用程序具有“活动会话”功能,您可以在其中查看和终止当前用户的会话。使用会话和cookie来存储用户会话时,使用类似的功能并不是问题,但是如何使用jwt来制作它?
服务器不存储有关jwt的任何信息,因此甚至无法获取活动会话列表。我在考虑在用户登录时在数据库中存储其他信息,因此我们可以获取设备名称,类型等数据,以及存储访问令牌。然后,当用户想要杀死特定会话时,以某种方式使所需的访问令牌无效。
制作此功能的正确方法是什么?
答案 0 :(得分:2)
JWT是自包含的,不需要服务器会话,但在某些情况下,有助于在服务器上维护有关已颁发和活动令牌的一些信息。
例如,在更改用户凭据,权限或仅注销后设置已撤销令牌的黑名单(您无法完全信任客户端删除其数据)。不需要存储完整令牌,只需分配唯一标识符即可。并且只保留令牌的跟踪,直到到期时间。
另请注意,在您的用例中,可以在用户交互期间续订令牌,因此与用户相关的任何数据都应附加到新令牌。如果您的令牌有很长的到期时间,则需要持久化
我不会称之为“会话”,因为它会导致与传统方法的混淆