繁体   English   中英

如何从 JWT header 中获取值到 nodejs 中的变量中?

[英]How can I get a value from the JWT header into a variable in nodejs?

我正在制作一个 API 服务器,我可以在其中登录并查看一些信息。 每当我登录时,我都会得到一个包含我的用户名的 JWT 令牌。 每当我想使用它时,我想将此用户名存储在一个变量中。 这是我想进入某些网页时用来验证我的令牌的代码。

import jwt from "jsonwebtoken";

function authenticateToken(req, res, next) {
  const authHeader = req.header("access-token");
  
  if (!authHeader) return res.sendStatus(401);

  jwt.verify(authHeader, process.env.ACCESS_TOKEN_SECRET, (err, user) => {
    if (err) return res.sendStatus(403);
    req.user = user;
    next();
  });
}

export default authenticateToken;

它检查 header 是否包含 JWT 令牌。 如果是这样,它会验证它。 然后在底部检索用户,但我不知道如何获取此值。

在我的路线上,我这样保护它们:

router.get("/", authenticateToken, getData);

在 getData 方法中,我显示来自 mysql 数据库的数据。 我想添加一个检查以查看我的用户名是否等于 getData 中的数据(因为您只能看到某些数据)。

在 getData 我得到这样的数据:

connection.query(
  "SELECT * FROM data WHERE userid = ?", [user.username],
  (err, rows) =>

在 [user.username] 点上,我想检索 JWT 令牌中的用户名。 我想使用一种方法来做到这一点,但我似乎无法得到它。 如何获取我的用户名?

您可以尝试稍微更改代码以将request传递给getData function,因为您将经过身份验证的用户存储在request中。

尝试这样的事情:

router.get("/", authenticateToken, async (req, res) => {
    getData(req);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM