亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 JWT (nodeJS) 檢查身份驗證

使用 JWT (nodeJS) 檢查身份驗證

梵蒂岡之花 2023-07-29 15:18:52
我想通過添加中間件“checkAuth”來保護我的路由。該中間件檢查 jwt 令牌的有效性。我正在使用 Express 路由器。但我不明白該怎么做。我的 checkAuth 中間件:module.exports = (req, res, next) => {    let token = req.headers.authorization.split(" ")[1];    try {        jwt.verify(token)        console.log("ok")    }catch (e) {        res.status(403)    }    next();}
查看完整描述

2 回答

?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

假設您使用的是?jsonwebtoken,則缺少“secret”字符串。

根據文檔,你應該這樣做。

創建令牌時:


var jwt = require('jsonwebtoken');

var token = jwt.sign({ foo: 'bar' }, 'shhhhh');

您還可以傳遞過期時間:


jwt.sign({

? data: 'foobar'

}, 'secret', { expiresIn: 60 * 60 });

用于驗證:


有幾種方法可以做到這一點。但是您應該需要相同的秘密字符串來驗證您用于登錄的信息。此外,您還需要為 jwt.verify 分配一個變量或通過回調調用它,以便訪問解碼的數據,例如用戶 ID 等。


// verify a token symmetric - synchronous

var decoded = jwt.verify(token, 'shhhhh');

console.log(decoded.foo) // bar


// verify a token symmetric

jwt.verify(token, 'shhhhh', function(err, decoded) {

? console.log(decoded.foo) // bar

});


// invalid token - synchronous

try {

? var decoded = jwt.verify(token, 'wrong-secret');

} catch(err) {

? // err

}


// invalid token

jwt.verify(token, 'wrong-secret', function(err, decoded) {

? // err

? // decoded undefined

});


查看完整回答
反對 回復 2023-07-29
?
慕少森

TA貢獻2019條經驗 獲得超9個贊

創建一個名為“verifyToken”的新函數


我建議答應一下。async所以你可以在函數中結合使用它await


function verifyToken(token){

  return new Promise((res, err) => {

    jwt.verify(token, "secret key", (err) => {

      if (err) rej(err)

      res(true)

    })

  })

}

它的承諾是基于的?,F在,您只需將令牌傳遞給它解析為 true 或 false 的函數即可:


module.exports = async (req, res, next) => {

    let token = req.headers.authorization.split(" ")[1];

    try {

        await verifyToken(token);

        console.log("ok")

    }catch (e) {

        res.status(403)

    }


    next();

}


查看完整回答
反對 回復 2023-07-29
  • 2 回答
  • 0 關注
  • 186 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號