Node.js 如何使用Ionic 4中的标头发送身份验证令牌?
在不使用HttpInterceptor的情况下,我希望将包含授权令牌的头发送到我的后端。下面是我尝试通过Headers对象执行的操作: 在后端,我使用此中间件功能验证令牌:Node.js 如何使用Ionic 4中的标头发送身份验证令牌?,node.js,angular,ionic-framework,jwt,authorization,Node.js,Angular,Ionic Framework,Jwt,Authorization,在不使用HttpInterceptor的情况下,我希望将包含授权令牌的头发送到我的后端。下面是我尝试通过Headers对象执行的操作: 在后端,我使用此中间件功能验证令牌: var isAuthenticated = function(req, res, next) { var token = req.headers["Authorization"]; console.log("mytoken is " + token); if (!token) { return res
var isAuthenticated = function(req, res, next) {
var token = req.headers["Authorization"];
console.log("mytoken is " + token);
if (!token) {
return res.status(401).json({
error: null,
msg: "You have to login first before you can access your lists.",
data: null
});
}
jwt.verify(token, req.app.get("secret"), function(err, decodedToken) {
if (err) {
return res.status(401).json({
error: err,
msg: "Login timed out, please login again.",
data: null
});
}
req.decodedToken = decodedToken;
next();
});
})
以下是我的后端的结束点:
router.get(
"/user/getCurrentPoints",
isAuthenticated,
userCtrl.getCurrentPoints
);
问题是我总是遇到401错误:你必须先登录才能访问你的列表。此外,我得到我的令牌是未定义的,在后端。我是否将令牌错误地发送到后端?请尝试下面的代码
const httpOptions = {
headers: new HttpHeaders({
'Authorization': 'Bearer ' + localStorage.getItem("token")
})
};
this.httpClientObj.get(environment.apiUrl + "/user/getCurrentPoints", httpOptions);
console.logmytoken的输出是什么?logmytoken是+token;?另外,当你像这样读授权标题时,你也会读单词Bearer,所以你必须从结果中删除它。@jps控制台中的输出是未定义的。@jps我也从标题中删除了Bearer,但我仍然得到相同的错误我认为引号没有正确关闭我必须删除Bearer吗,因为我的后端没有拆分标头,或者它是自动完成的?不,您必须在授权标头中添加承载,您可以这样做。token=req.headers.authorization.split'Bearer'[1];令牌现在为空
const httpOptions = {
headers: new HttpHeaders({
'Authorization': 'Bearer ' + localStorage.getItem("token")
})
};
this.httpClientObj.get(environment.apiUrl + "/user/getCurrentPoints", httpOptions);