[英]Verify a JWT token string, containing 'Bearer ' with NodeJS
我以推薦的形式發送標題Authorization: Bearer <token>
。
看起來,令牌字符串,即'Bearer <token>'
,不是令牌,但需要先刪除'Bearer '
子字符串以獲取令牌字符串本身。
我想知道,從代碼中手動刪除它是否是一種常規做法,如下所示:
const token = authHeaderValue.replace('Bearer ', '')
在解碼和驗證之前?
為什么我的自定義應用程序中需要這個'Bearer '
字符串?
我使用這種技術。
// Header names in Express are auto-converted to lowercase
let token = req.headers['x-access-token'] || req.headers['authorization'];
// Remove Bearer from string
token = token.replace(/^Bearer\s+/, "");
if (token) {
jwt.verify(token, config.secret, (err, decoded) => {
if (err) {
return res.json({
success: false,
message: 'Token is not valid'
});
}
req.decoded = decoded;
next();
});
} else {
return res.json({
success: false,
message: 'Token not provided'
});
}
在這里,我們使用正則表達式去除 JWT 前面的任何 Bearer 字符串。 如果包含任何空格,它也會被刪除。
HTTP Authorization
標頭中的值Bearer
表示身份驗證方案,就像Basic
和Digest
。 它在RFC 6750 中定義。
一個應用程序可以支持多種身份驗證方案,因此始終建議先檢查身份驗證模式。
在基於令牌的身份驗證中,首先確保Authorization
標頭包含后跟空格的Bearer
字符串。 如果沒有,拒絕請求。 如果找到后跟空格的Bearer
,則提取必須緊跟在空格字符之后的標記。
有關Bearer
身份驗證方案的更多詳細信息,請參閱此答案。
身份驗證標頭請求具有 IETF 中定義的格式。
即認證:
類型包括以下內容:Bearer、error_code、error_description。
我們可以通過用“,”字符分隔來一次發送多種類型。
Bearer 是一種認證訪問類型。
我使用拆分功能來提取令牌
const bearerHeader = req.headers['authorization'];
if(! bearerHeader ){
return res.sendStatus(403);
}
else
{
const bearerToken = bearerHeader.split(' ')[1];
let data = await jwt.verify(bearerToken,secretkey);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.