【问题标题】:JWT - storing token in cookiesJWT - 将令牌存储在 cookie 中
【发布时间】:2016-09-13 21:54:03
【问题描述】:

我了解将令牌存储为 cookie 与使用 localStorage 存在许多差异/优点和缺点。这个问题是关于将其存储在 cookie 中的实际实现的问题。

我很困惑,因为如果令牌存储在 cookie 中,用户将始终得到验证,从而使令牌的使用毫无价值。令牌将始终与服务器端会话数据相关联。

谁能解释一下实现细节?

【问题讨论】:

  • JWT 的用途之一是删除服务器端会话数据。我认为您的问题目前有点宽泛,您可能会考虑包括更多关于您想要做什么的细节。
  • 我开始想在客户端存储令牌,但我偶然发现了这篇文章。问题是实现是模糊的,我不明白如何将它存储在 cookie 中与仅使用普通的旧 cookie 完全不同 - stormpath.com/blog/…

标签: jwt express-jwt


【解决方案1】:

例子:

(1) 普通旧 cookie:“旧普通 cookie”中的数据:“129scdsdf23i”

(2) JWT token: JWT data/token 保存在 cookie: "1122abde"

您如何验证数据/令牌是“有效身份验证”:

(1)plain old cookie:将“129scdsdf23i”与数据库/服务器中保存的数据进行比较,检查它们是否“相同”

(2) JWT 令牌:步骤 a:验证“1122abde”,“1122abde”本身是有效的,因为 (1 + 2 + a )= d 和 (1+2+b) = e。这只是一个例子。

步骤 b:将“1122abde”解码为“{user: user1, email:”user1@gmail.com“}”,如您所见,现在您获得了用户和电子邮件。

所以“1122abde”是由服务器创建的,并且在创建过程中涉及一个秘密随机数。黑客永远无法在不知道“秘密”的情况下创建有效的 JWT 令牌。

“我很困惑,因为如果令牌存储在 cookie 中,用户将始终被验证,从而使令牌的使用毫无价值。”

=> cookie 只是一个保存您的数据的地方,它与您的数据本身无关。如果 cookie 中有“1x22abde”,这是一个错误的令牌,将无法通过身份验证。

【讨论】:

    猜你喜欢
    • 2015-09-15
    • 2021-10-16
    • 2021-01-21
    • 1970-01-01
    • 2017-12-13
    • 2021-02-11
    • 2017-02-10
    • 2022-08-10
    • 2022-01-15
    相关资源
    最近更新 更多