使用angular 7时无法在expressJs中使用passpost-jwt授权

时间:2018-10-29 17:32:37

标签: node.js angular express jwt passport.js

我是平均水平的新手,使用passport-jwt进行授权。我已启用cors来进行外部的获取/发布请求。因此我可以使用angular 7发布/获取数据,但无法授权JWT生成的令牌。一件事,在这张图片Restclient中看到的,在firefox上使用RestClient Addon(类似于chrome中的邮递员)时,授权工作正常。

但是,当尝试使用angular从同一个api获取请求时,却得到了consoleError 这是我的角度服务

  getProfile():Observable<any>{
    let headers = new HttpHeaders();
    console.log(localStorage.getItem('mean_token'));
    headers.append('Authorization', localStorage.getItem('mean_token'));
    return this.http.get('http://localhost:8888/users/profile', {headers:headers});
  }

这是节点表达代码

//profile
router.get('/profile', passport.authenticate('jwt', {session:false}), (req, res, next)=>{
    console.log("profle called");
    res.json({user:req.user});
});

苦苦寻找答案,请帮帮我。

注意:其他用于get / post的API仍在与angular一起工作。

1 个答案:

答案 0 :(得分:1)

这是我找到的angular(> 6)新版本的解决方案。 headers.append()对象是不可变的,因此HttpHeaders不起作用。 您需要将标题更改为此:

    const headers = new HttpHeaders({ 'Content-Type': 'application/json', 
'Authorization': localStorage.getItem('mean_token') });

现在一切正常。.