gpt4 book ai didi

node.js - 用于传递 JWT 的 httpOnly Cookies 与授权 header

转载 作者:行者123 更新时间:2023-12-05 05:51:52 26 4
gpt4 key购买 nike

所以我对通过 JWT 授权的正确方法有点困惑,我知道一种常见的方法是您可以使用 Authorization header 来验证它,如下所示:

const verifyToken = (req, res, next) => {
const authHeader = req.headers.token;
if (authHeader) {
const token = authHeader.split(" ")[1];
jwt.verify(token, process.env.JWT_KEY, (err, user) => {
if (err) {
res.status(403).json("Token is not valid!");
}
req.user = user;
next();
});
} else {
res.status(401).json("You're not authenticated");
}
};

但是,如果我在登录后使用 cookie 来存储我的 JWT token ,例如:

res.cookie("accessToken", accessToken, { httpOnly: true });
res.cookie("refreshToken", refreshToken, { httpOnly: true });

这是否意味着我可以忽略上面的 authHeader 并直接从 cookie 中使用来验证我的 Token?像这样的东西:

const verifyToken = (req, res, next) => {
//USING TOKEN FROM COOKIES
const accessToken = req.cookies.accessToken;
const refreshToken = req.cookies.refreshToken;
if (accessToken && refreshToken) {
jwt.verify(accessToken, process.env.JWT_KEY, (err, user) => {
if (err) {
res.status(403).json("Token is not valid!");
}
req.user = user;
next();
});
} else {
res.status(401).json("You're not authenticated");
}
};

感谢任何澄清

最佳答案

我认为将 token 直接存储为 cookie 是一种不好的做法,因为访问计算机的任何人都可以访问它们。 cookie 存储在浏览器中时不 protected 。

只设置 HttpOnly 也是一种不好的做法,您还应该在 cookie 上设置 SecureSameSite 属性,使它们更安全。更好的做法是在将它们存储在 cookie 中之前对其进行加密。

更好的方法是查看 BFF 模式,如 here 所述

关于node.js - 用于传递 JWT 的 httpOnly Cookies 与授权 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70302476/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com