【发布时间】:2019-06-12 23:16:36
【问题描述】:
我正在使用 React SPA、Express、Express-session、Passport 和 JWT。 我对一些用于存储令牌的不同客户端存储选项感到困惑:Cookie、Session 和 JWT / Passport。
令牌是否必须存储在 cookie 中,即使我可以将它们存储在 req.sessionID 中?
许多网站使用 cookie 来存储购物车令牌。到目前为止,我已经根据会话 ID 存储了购物车数据,而没有添加任何 cookie。
所以当用户访问我的网站时,我会将其与他们的
req.sessionID然后检索数据库中的数据,如购物车和用户会话。
我需要存储 cookie 吗?我可以通过req.sessionID 访问它以获取所需的数据。
还有第二个
我已使用passport-google-oauth20 进行身份验证。成功登录后,数据将保存到会话中。并将其发送给客户端,我必须通过 URL 查询?token='sdsaxas' 发送它。
在这种情况下,我有很多不同的意见。有人保存了它 到本地存储中,有人通过使用 JWT 将其转换为令牌将其保存到 cookie 中。
jwt.sign(
payload,
keys.jwt.secretOrPrivateKey,
{
expiresIn:keys.jwt.expiresIn // < i dont know what is this expired for cookies or localstorage ?
}, (err, token) => {
res.redirect(keys.origin.url + "?token=" + token);
});
我真的可以使用 sessionID(不带 cookie 或本地存储)存储与会话相关的所有内容吗?
因为我使用 React SPA,所以只需要进行一次或每次页面刷新并检索数据然后保存到 redux 中。
【问题讨论】:
-
cookies 和 localstorage 用于在客户端浏览器中保持会话。您可以使用它们重新验证返回的用户。我不熟悉 sessionID 键,但我必须假设它是由护照中间件根据您的 queryString
?token=设置到 express req 对象中的。您可能将其作为全局变量存储在您的应用程序中,如果用户关闭浏览器,它将丢失。如果您想稍后存储此令牌值,请使用 cookie 或 localstorage。或者你可以让用户再次登录,完全省去麻烦! -
我只是在寻找参考资料和许多让我感到困惑的差异@Quentin 也许你能解释一下?
-
我只是对在购物车上使用 cookie 和用户身份验证以确保安全 感到困惑
-
除非您有特殊需要,否则只需使用
localStorage存储JWTs。大多数用于身份验证的 js 库或框架插件已经这样做了。
标签: javascript jwt