是否存储未解码的 jwt 令牌 server-side?

To store jwt token undecoded server-side or not?

如果这是一个愚蠢的问题,请原谅我。

正如标题所问,每次请求解码token server-side 不是很昂贵,存储和查找未解码的token不是更好吗? 您会在 nodejs object 或 mongodb 中存储 session 个令牌吗? Mongodb 将是另一次往返,但您可以使用 _id 轻松找到。(如果我错了,请纠正我,我正在学习,所以 advise/resources = 非常欢迎!)

它现在存储在哪里?如果在 cookie 中,则不需要以解码形式将其存储在其他地方。访问像 mongo 这样的任何外部存储总是比从 base64 或 json.

解码某些东西更昂贵

同时,如果它根本不存储(并且仅用于获取访问权限),则不得将其存储在任何地方,因为 JWT 令牌就像密码一样。你必须避免在你的数据库中存储这些东西。

视情况而定

仅验证签名意味着确保令牌是使用您的密钥生成的。

存储和检查令牌意味着您可以验证令牌是否由您的服务器创建。这样您还可以使单个令牌无效,例如如果用户丢失 his/her phone s/he 可以使该用户无效。

键值数据库,例如 Redis,通常用于这种存储,因为它们对这些简单的 put/get 操作执行 非常 并且会给你每秒数十万次操作。