簡體   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