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