我们如何将JWT令牌存储在Http-only cookie中



我正在创建登录模块。

  1. 用户将输入用户名和密码。

  2. 如果用户验证成功,则服务器将返回JWT令牌。

  3. 我将使用JWT令牌来验证React js中不同的API调用。

现在我担心的是,我发现了一些关于这方面的文章,然后我发现我们可以使用仅http cookie。我们如何实现httponlycookie方法来存储JWT?它安全吗?

HttpOnly cookie是安全的,因为它们受到保护,不会通过Document.cookie API访问浏览器,因此受到保护,免受XSS攻击。

当你的用户成功验证后,服务器应该生成一个jwt令牌,并将其作为cookie返回给你的客户端,如下所示:

return res.cookie('token', token, {
expires: new Date(Date.now() + expiration), // time until expiration
secure: false, // set to true if you're using https
httpOnly: true,
});

cookie将通过来自客户端的传入http请求进行访问。您可以使用授权中间件功能检查cookie的jwt值,以保护您的API端点:

const verifyToken = async (req, res, next) => {
const token = req.cookies.token || '';
try {
if (!token) {
return res.status(401).json('You need to Login')
}
const decrypt = await jwt.verify(token, process.env.JWT_SECRET);
req.user = {
id: decrypt.id,
firstname: decrypt.firstname,
};
next();
} catch (err) {
return res.status(500).json(err.toString());
}
};

有关更多详细信息,请参阅:https://dev.to/mr_cea/remaining-stateless-jwt-cookies-in-node-js-3lle

最新更新