javascript - 如何从 JWT 标头中获取值到 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;
它检查标头是否包含 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
函数,因为您将经过身份验证的用户存储在request
.
尝试这样的事情:
router.get("/", authenticateToken, async (req, res) => {
getData(req);
});
推荐阅读
- javascript - 在 Stack.screen 上通过本机反应在一个变量中分配多个值
- python - 使用 selenium 和 beautifulsoup 进行网页抓取
- django - Django ORM:获取所有记录以及每条记录各自的最后一个日志
- android - 如何在计算器程序的数字字符串中以单个小数形式输入?
- python - Python:根据其他两列的值有条件地创建新列
- json - 执行自定义解组后解组剩余的 JSON
- javascript - 受控禁用按钮 Material UI - React JS
- pdf - 无法在 odoo-12 中上传文件大小为 1MB 或更大的 PDF 文件
- swift - NSTextField 的文本方向
- python - 内部函数上的 Python lru_cache 似乎不起作用