当我想让JWT令牌无效时,JWT和session-cookie有什么区别?

时间:2017-09-06 04:24:02

标签: session cookies react-native jwt express-jwt

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

但是如果我的用户停用了,我想删除JWT令牌。

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

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

1 个答案:

答案 0 :(得分:0)

正如您所提到的,JWT令牌可以携带任意用户相关信息。通信保持无状态,因为服务器不记得先前请求期间该特定客户端的状态。您必须为每个请求提供上下文,您可以使用JWT令牌执行此操作。

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

在这种程度上,JWT和cookie是在请求之间传递上下文的类似机制。当您必须决定是否应该使用后端会话存储来减少每个请求中传输的数据的大小时,它们都受到大小边界的限制。