簡體   English   中英

NodeJS JWT驗證失敗甚至令牌,如果它與符號令牌相同

[英]NodeJS JWT Verify Fail even token if it's the same as the sign token

嘗試在NodeJS上開發API時,我得到了我的符號令牌,並通過安全的api路由將其發送回去,但是jwt永遠無效,即使它與我生成的令牌相同! 我的代碼有什么問題?

我是那樣做的

pbkdf2(queryPassword, salt, 10000, length, digest, (err: Error, hash: Buffer) => {
  if (hash.toString('hex') === userPassword) {
    sign({'user': username, permissions: []}, secret, {expiresIn: '7d'}, (err, token => {
      response.json({'token': token});
    }));
  } else {
    response.json({'error': 'User / Password Mismatch'});
  }
});

這是驗證:

verify(token, secret, function(tokenError, decoded) {
    if (tokenError) { // i'm always getting error...
        return response.status(403).json({
            message: 'Invalid token, please Log in first'
        });
    }

    next();
});

這是我的Angular2服務,它從我的API請求數據

let headers = new Headers({'Authorization': 'Bearer ' + this.token});
let options = new RequestOptions({headers: headers});
this.http.get(apiUrl, options);

符號生成的令牌:

http服務收到的令牌:

Beary eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoidHQiLCJwZXJtaXNzaW9ucyI6W10sImlhdCI6MTQ4MzExNTAzNCwiZXHWIjoxNDgzN1E6B1CJ6B1C6B1C1J6B1QJ1B

我終於發現了我的錯誤。

在我的angular2 Api中,我正在使用這條線

let headers = new Headers({'Authorization': 'Bearer ' + this.token});

我只需要發送

let headers = new Headers({'Authorization': this.token});

“軸承”導致了我的錯誤...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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