首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >httpOnly Cookies与用于传递JWT的授权头

httpOnly Cookies与用于传递JWT的授权头
EN

Stack Overflow用户
提问于 2021-12-10 09:40:38
回答 1查看 938关注 0票数 2

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

代码语言:javascript
复制
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令牌,如:

代码语言:javascript
复制
res.cookie("accessToken", accessToken, { httpOnly: true });
res.cookie("refreshToken", refreshToken, { httpOnly: true });

这是否意味着我可以忽略上面的authHeader,直接从cookie中使用来验证我的令牌?类似于:

代码语言:javascript
复制
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");
  }
};

谢谢你的澄清

EN

回答 1

Stack Overflow用户

发布于 2021-12-10 11:44:36

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

仅仅设置HttpOnly也是一种糟糕的做法,您还应该在cookies上设置 secure SameSite属性,以使它们更加安全。在你把它们储存在饼干里之前,最好先加密它们。

更好的方法可以是查看BFF模式,如所描述的这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70302476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档