繁体   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