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,
});
可以通过来自客户端的传入 http 请求来访问 cookie。您可以使用授权中间件功能检查 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 https://dev.to/mr_cea/remaining-stateless-jwt-cookies-in-node-js-3lle