如何在Ionic 4中发送带有标头的身份验证令牌?

时间:2019-07-25 12:21:00

标签: node.js angular ionic-framework jwt authorization

不使用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.另外,我在后端发现我的令牌未定义。我是否将令牌错误地发送到后端?

1 个答案:

答案 0 :(得分:0)

尝试以下代码

const httpOptions = {
    headers: new HttpHeaders({
        'Authorization': 'Bearer ' + localStorage.getItem("token")
    })
  };
this.httpClientObj.get(environment.apiUrl + "/user/getCurrentPoints", httpOptions);