我读了一些关于"JWT vs Cookie"的文章,但它们只让我更加困惑...
我需要澄清一下,当人们谈论“基于令牌的身份验证与cookie”时,这里提到的cookie仅仅是指会话cookie吗? 我的理解是cookie就像介质,它可以用于实现基于令牌的身份验证(在客户端存储能够标识已登录用户的信息)或基于会话的身份验证(在客户端存储一个常量,该常量与服务器端的会话信息匹配)。
我们为什么需要JSON Web Token? 我以前使用标准cookie来实现基于令牌的身份验证(不使用会话ID,不使用服务器内存或文件存储):
Set-Cookie: user=innocent; preferred-color=azure
,我观察到的唯一区别是JWT包含负载和签名...而对于HTTP头,您可以选择签名或明文 cookie。 在我看来,签名cookie (cookie:'time=s%3A1464743488946.WvSJxbCspOG3aiGi4zCMMR9yBdvS%2B6Ob2f3OG6%2FYCJM'
) 更加节省空间,唯一的缺点是客户端无法读取令牌,只有服务器可以...但我认为这没问题,因为就像在JWT中的声明是可选的一样,令牌不必具有意义。