我正在使用带有EJS的Node Express。我使用JWT构建了一个用户身份验证,并使用以下代码将生成的令牌存储在Cookie中
res.cookie('authorization', token, {maxAge: 3 * 60 * 60 * 1000});
在验证时我也可以很容易地从cookies中读取它
req.cookies['authorization'];
使用此方法我不必在前端执行任何与身份验证相关的代码。但我在某处读到,最佳做法是将其存储在浏览器的本地存储中。
localStorage.setItem("authorization", "..object..");
此代码似乎是前端代码。这意味着我必须将我的令牌发送到前端,然后将其保存到localStorage。
这可以在不将令牌发送到前端的情况下完成吗?
答案 0 :(得分:3)
您使用Cookie工作正常。要使用本地存储,您需要将令牌发送回前端(经过验证)并将其附加到每个后续请求中。 javascript可以访问本地存储,并且容易受到xss攻击。 最好使用带有HTTPOnly标志的cookie。