我在后端使用django-rest-framework-jwt,并从Angular Project调用API。当用户尝试登录多个浏览器时,每次都会在新浏览器上为该用户生成一个新的令牌。每个令牌都是有效的。我想要的是,当用户已经登录在一个浏览器,他/她试图登录第二个不同的浏览器,第一个浏览器的前一个令牌应该是无效的。
发布于 2018-12-26 16:47:58
简而言之,NO,你不能仅仅避免生成令牌,除非你在django-rest-framework-jwt模块中做了一点改动。但这不再是纯粹的jwt了。
JWT代表JSON Web Tokens,它是一种在计算机系统之间交换数据的机制,恰好可以方便地生成可用于在web应用程序中实现无状态身份验证的授权头。
所以
无状态意味着您不跟踪用户令牌,而只是验证它们。如果token有效且有效负载有效,则OK。它不关心生成了多少令牌,也不关心它们是否与一个用户相关。该令牌是基于时间戳创建的,并将对照其生存期和时间戳进行验证。
这意味着当用户请求时,django rest jwt模块将基于系统的当前时间戳创建一个令牌。
请记住,您不能删除
标记。因为它没有存储在数据库中。所以,如果你的令牌被欺骗了,那就完了。您无法对其执行任何操作,除非令牌的生命周期结束且令牌过期。
如果您想要跟踪这些令牌并能够控制它们,例如,不要像您要求的那样为用户创建冗余的令牌:
https://stackoverflow.com/questions/53929397
复制相似问题