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);
符号生成的令牌:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoidHQiLCJwZXJtaXNzaW9ucyI6W10sImlhdCI6MTQ4MzExNTAzNCwiZXhwIjoxNDgzNzE5ODM0fQ.bJbH4619JAU8pf_6qcYl0V1V5PxWsPBRYeXbeb6VL_M
http 服务收到的令牌:
承载eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoidHQiLCJwZXJtaXNzaW9ucyI6W10sImlhdCI6MTQ4MzExNTAzNCwiZXhwIjoxNDgzNzE5ODM0fQ.bJbH4619JAU8pf_6qcYl0V1V5PxWsPBRYeXbeb6VL_M
我终于找到了我的错误....
在我的 angular2 Api 中,我使用了这条线
let headers = new Headers({'Authorization': 'Bearer ' + this.token});
我只需要发送
let headers = new Headers({'Authorization': this.token});
'Bearer ' 导致了我的错误...
尝试在 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);
符号生成的令牌:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoidHQiLCJwZXJtaXNzaW9ucyI6W10sImlhdCI6MTQ4MzExNTAzNCwiZXhwIjoxNDgzNzE5ODM0fQ.bJbH4619JAU8pf_6qcYl0V1V5PxWsPBRYeXbeb6VL_M
http 服务收到的令牌:
承载eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoidHQiLCJwZXJtaXNzaW9ucyI6W10sImlhdCI6MTQ4MzExNTAzNCwiZXhwIjoxNDgzNzE5ODM0fQ.bJbH4619JAU8pf_6qcYl0V1V5PxWsPBRYeXbeb6VL_M
我终于找到了我的错误....
在我的 angular2 Api 中,我使用了这条线
let headers = new Headers({'Authorization': 'Bearer ' + this.token});
我只需要发送
let headers = new Headers({'Authorization': this.token});
'Bearer ' 导致了我的错误...