当我想使 JWT 令牌无效时,JWT 和 session-cookie 有啥区别?

Posted

技术标签:

【中文标题】当我想使 JWT 令牌无效时,JWT 和 session-cookie 有啥区别?【英文标题】:what is difference between JWT and session-cookie when i want to invalidate JWT token?当我想使 JWT 令牌无效时,JWT 和 session-cookie 有什么区别? 【发布时间】:2018-02-14 10:40:33 【问题描述】:

当我阅读 JWT 的文档时,我了解到我们不需要使用 session 来保存用户数据,因为它在请求头中被加密,实际上 JWT 是无状态的。

但我想删除 JWT 令牌,如果我的用户已停用..

在这种情况下,在我的 JWK 中间件中,验证令牌后,我必须在我的 mongoDB 中获取一个查询,以检查该用户是活动的还是非活动的。

所以它不是无状态的,另一方面它对 mongoDB 来说是一个很大的过载,因为 mongoDB 不是保存会话的好数据库!所以我需要 Redis .. 如果我想使用 Redis,会话和 cookie 和 JWT 有什么区别?

【问题讨论】:

【参考方案1】:

如您所述,JWT 令牌可以携带任意用户相关信息。通信保持无状态,因为服务器不记得在先前请求期间此特定客户端的状态是什么。您必须以 JWT 令牌的形式为每个请求提供上下文。

只要上下文很小,就可以将其全部放在令牌中。当有很多上下文时,在每个请求中传递它可能不再是最佳选择。这是您需要切换到在后端存储状态的时候。

从这个意义上说,JWT 和 cookie 是在请求​​之间承载上下文的类似机制。当您必须决定是否应使用后端会话存储来减少每个请求中传输的数据大小时,它们都受到大小限制。

【讨论】:

谢谢..你能看一下这个问题吗?***.com/questions/46069698/…

以上是关于当我想使 JWT 令牌无效时,JWT 和 session-cookie 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

我们可以在 Asp.NET Core 中销毁/无效 JWT 令牌吗?

AzureAD JWT 令牌受众声明前缀使 JWT 令牌无效

使用刷新令牌时 Spring Boot JWT 令牌无效签名

使用 jsonwebtoken 库生成的 JWT 令牌在 jwt.io 中提供了无效签名

使以前的令牌无效并检查用户是不是有 JWT 令牌

使用 jwt-go 库 - 密钥无效或类型无效