簡體   English   中英

驗證Jwt的正確方法

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM