【发布时间】:2015-11-26 09:47:26
【问题描述】:
如果这是一个愚蠢的问题,请原谅我。
正如标题所问,为每个请求在服务器端解码令牌不是很昂贵,存储和查找未解码的令牌不是更好吗? 您会将会话令牌存储在 nodejs 对象或 mongodb 中吗? Mongodb 将是另一个往返,但是您可以使用 _id 轻松查找。(如果我错了,请纠正我,我正在学习,所以建议/资源 = 非常欢迎!)
【问题讨论】:
标签: javascript node.js mongodb token jwt
如果这是一个愚蠢的问题,请原谅我。
正如标题所问,为每个请求在服务器端解码令牌不是很昂贵,存储和查找未解码的令牌不是更好吗? 您会将会话令牌存储在 nodejs 对象或 mongodb 中吗? Mongodb 将是另一个往返,但是您可以使用 _id 轻松查找。(如果我错了,请纠正我,我正在学习,所以建议/资源 = 非常欢迎!)
【问题讨论】:
标签: javascript node.js mongodb token jwt
视情况而定
仅验证签名意味着确保令牌是使用您的密钥生成的。
存储和检查令牌意味着您可以验证令牌是由您的服务器创建的。这样,您还可以使单个令牌无效,例如如果用户丢失了他/她的手机,他/她可以使手机失效。
Redis 等键值数据库通常用于此类存储,因为它们对这些简单的 put/get 操作的性能非常非常好,每秒可为您提供数十万次操作。
【讨论】:
它现在存储在哪里?如果在 cookie 中,您不需要以解码形式将其存储在其他地方。访问任何像 mongo 这样的外部存储总是比从 base64 或 json 解码更昂贵。
同时,如果它根本不存储(并且仅用于获取访问权限),则不得将其存储在任何地方,因为 JWT 令牌就像密码一样。您必须避免将此类内容存储在您的数据库中。
【讨论】: