JWT 未解码“JWT 格式错误” - 节点角度
JWT not decoding "JWT malformed" - Node Angular
登录后,我会向客户端发送一个JSON Web令牌。我有一个自定义的身份验证拦截器,它将 JSON Web 令牌发送回服务器端。
当我登录时,一切正常。转到不同的子页面,效果很好。这是因为我有一个检查护照身份验证或令牌身份验证的功能,并且在登录时护照身份验证工作。
当我关闭浏览器并返回站点时,JWT 无法解码。JWT 可以解码,当它被放置在编码功能正下方时。我已经尝试了jwt-simple节点模块和jsonwebtoken节点模块,但返回了相同的错误。
这是我的自定义函数,用于检查有效令牌:
function checkAuthentication(req, res, next){
if (!req.headers.authorization) {
return res.status(401).send({ message: 'Please make sure your request has an Authorization header' });
}
console.log("Here");
var token = req.headers.authorization.split('.')[1];
console.log(token);
console.log(config.secret);
var payload = null;
try {
console.log("And here....");
payload = jwt.decode(token, config.secret);
console.log(payload);
}
catch (err) {
console.log(err);
return false;
}
if (payload.exp <= moment().unix()) {
return false;
}
req.user = payload.sub;
return true;
}
JWT-Simple 使用 jwt.encode()
和 jwt.decode
,jsonwebtoken 使用 jwt.sign()
和 jwt.verify()
。这是我在控制台中得到的:
Here
eyJzdWIiOiI1NmEyZDk3MWQwZDg2OThhMTYwYTBkM2QiLCJleHAiOjE0NTYxOTEyNzQsImlhdCI6MTQ1NTMyNzI3NH0
VerySecretPhrase
And here....
{ [JsonWebTokenError: jwt malformed] name: 'JsonWebTokenError', message: 'jwt malformed' }
这是客户端上的身份验证拦截器。我收集令牌并将其设置在请求标头中:
app.factory('httpInterceptor', function($q, $store, $window) {
return {
request: function (config){
config.headers = config.headers || {};
if($store.get('token')){
var token = config.headers.Authorization = 'Bearer ' + $store.get('token');
}
return config;
},
responseError: function(response){
if(response.status === 401 || response.status === 403) {
$window.location.href = "http://localhost:3000/login";
}
return $q.reject(response);
}
};
});
很高兴你弄清楚了!对于后代来说,问题如下:JWT 由三个组件组成,一个标头、有效载荷和签名(可以在这篇 toptal 帖子中找到一个很好的、彻底的解释(,所以当你将 JWT 拆分为带有 var token = req.headers.authorization.split('.')
的组件时,你分配给的值token
仅指有效载荷, 而不是完整的 JWT。
由于 jwt 简单解码方法需要完整的令牌,而您只为其提供要评估的有效负载,因此您的代码触发了"jwt 格式错误"错误。在您的情况下,由于您在授权标头中在令牌前面加上了Bearer
,因此您可以使用var token = req.headers.authorization.split(' ')
获取完整令牌。
- 节点导出返回一个空对象
- 可以前端maven插件使用节点,npm已经安装
- 在jstree中,如何将指定的节点集中到大型树上
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 如何从模块链中调用函数.导出到节点中
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- d3基于用户选择动态更新节点
- 有条件更新d3.js力图中节点的最佳方法
- 如何处理node.js节点mongodb中的连接和查询队列
- 将DOM节点值与字符串Javascript进行比较
- 节点fs.stat名称未定义
- 无法安装节点sass相关性
- 节点协同与生成器和Promise并行流量控制
- 如何在节点中使用 x.509 证书验证 JWT 令牌
- 使用护照-jwt 对节点 API 进行身份验证
- JWT 从节点.js更新有效负载
- JWT 未解码“JWT 格式错误” - 节点角度
- 从快速节点下载文件.js具有 JWT 授权
- 从节点访问JWT的最佳方式是什么?
- 节点快速通行证(JWT) -验证后回调