0

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();
});

ここに、API からデータを要求する Angular2 サービスがあります

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

署名によって生成されたトークン:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoidHQiLCJwZXJtaXNzaW9ucyI6W10sImlhdCI6MTQ4MzExNTAzNCwiZXhwIjoxNDgzNzE5ODM0fQ.bJbH4619JAU8pf_6qPBcYl0V1V5XWbes6

http サービスが受け取ったトークン:

ベアラー

4

1 に答える 1

1

私はついに私のエラーを見つけました....

私のangular2 Apiでは、この行を使用していました

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

私は送信する必要があります

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

「ベアラー」がエラーの原因でした...

于 2016-12-30T19:27:10.403 に答える