不使用HttpInterceptor,我想将包含授权令牌的标头发送到我的后端。这是我通过Headers
对象进行的尝试:
import { Http, Headers, RequestOptions } from "@angular/http";
getPoints() {
var headers = new Headers();
headers.append("Authorization", "Bearer " + localStorage.getItem("token"));
headers.append("Content-Type", "application/json");
return this.http.get(environment.apiUrl + "/user/getCurrentPoints", {
headers
});
}
在后端,我正在使用此中间件功能来验证令牌:
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错误:You have to login first before you can access your lists.
另外,我在后端发现我的令牌未定义。我是否将令牌错误地发送到后端?
答案 0 :(得分:0)
尝试以下代码
const httpOptions = {
headers: new HttpHeaders({
'Authorization': 'Bearer ' + localStorage.getItem("token")
})
};
this.httpClientObj.get(environment.apiUrl + "/user/getCurrentPoints", httpOptions);