[英]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.