[英]Correct way to verify Jwt
我在這里寫了這段代碼
jwt.verify(token.split(':')[1], 'testTest')
我正在嘗試驗證這一點,以便它可以返回 true 並繼續。 jwt 將作為有效負載示例出現
我怎樣才能驗證這個 jwt
`token.split(':')[1] can match testTest`
jwt.verify
不會這樣做。 它使用秘密或公鑰驗證 jwt。 如果您不想驗證它而只想獲取有效負載,那么您要做的是解碼 jwt,然后檢索值並進行字符串比較。
let decoded = jwt.decode(token);
if(decoded.sub == "testTest")
{
//Do your stuff...
}
您可以在他們的github 頁面中閱讀有關 jwt 的更多信息
我的方法是保持 verify 方法只驗證令牌沒有被修改:
jwt.verify(token, JWT_SECRET);
並使用decode
方法獲取有效載荷:
const payload = jwt.decode(token, JWT_SECRET);
之后,您可以檢查您的有效載荷值
第一個重要問題 - 誰是代幣發行者?
您是否想驗證令牌有效性和/或只是將令牌的內容與給定值進行比較?
驗證(和解碼)是用
var decoded = jwt.verify(token, '<public key for verification>');
if(decoded.sub == "<value to match>"){
// TODO: implement match case
}
(假設您使用的是 jsonwebtoken 包)
您必須提供由令牌發行者提供的用於驗證的公鑰。
如果您想正確測試它,我建議在 jwt.io 上生成一個令牌 -> 您可以自己預先生成一個私鑰/公鑰對,並在解碼前將其用於編碼和驗證。
也可以只對令牌進行解碼,但如果沒有針對發行者提供的公鑰進行驗證,任何人都可以向您發送令牌,而這些令牌對您來說將是非常不安全的。
最好的祝願
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.