如何从 JWT 标头中获取值到 nodejs 中的变量中?
Posted
技术标签:
【中文标题】如何从 JWT 标头中获取值到 nodejs 中的变量中?【英文标题】:How can I get a value from the JWT header into a variable in nodejs? 【发布时间】:2021-08-07 22:13:27 【问题描述】:我正在创建一个 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 令牌中的用户名。我想使用一种方法来做到这一点,但我似乎无法得到它。如何获取我的用户名?
【问题讨论】:
【参考方案1】:您可以尝试稍微更改代码以将request
传递给getData
函数,因为您将经过身份验证的用户存储在request
中。
试试这样的:
router.get("/", authenticateToken, async (req, res) =>
getData(req);
);
【讨论】:
以上是关于如何从 JWT 标头中获取值到 nodejs 中的变量中?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Rails 和 React 时如何在标头中获取 JWT 令牌
如何从标头中正确获取 jwt 令牌并将其与 express 一起使用