1

我知道将令牌存储为 cookie 与使用 localStorage 有很多区别/优点和缺点。这个问题是关于将其存储在 cookie 中的实际实现的问题。

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

有人可以解释实施细节吗?

4

1 回答 1

1

例子:

(1)plain old cookie:你的“old plain cookie”中的数据:“129scdsdf23i”

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

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

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

(2) JWT token: step a: VERIFY "1122abde", "1122abde" 本身是有效的,因为 (1 + 2 + a )= d 和 (1+2+b) = e。这只是一个例子。

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

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

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

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

于 2017-06-12T01:56:37.760 回答