使用angular 7时无法使用passport-jwt在快递Js中进行授权

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用angular 7时无法使用passport-jwt在快递Js中进行授权相关的知识,希望对你有一定的参考价值。

我是平均堆栈的新手,使用passport-jwt进行授权。我已经启用了cors来获取外部的获取/发布请求。所以我能够使用angular 7发布/获取数据,但无法授权JWT生成的令牌。有一件事,授权在Firefox上使用RestClient Addon时很好(类似于chrome中的邮递员),你可以在这张图片中找到Restclient

但是当试图从使用角度的同一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查找。

答案

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

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

现在一切都很好..

以上是关于使用angular 7时无法使用passport-jwt在快递Js中进行授权的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Angular 客户端中处理 passport-facebook 回调?

Angular/Node/Express/Passport 跨域问题 - 启用 CORS Passport Facebook 身份验证

Passport.js 上的登录不会在 Angular 上更新

使用 passport-auth0 进行 MEAN Stack 用户身份验证,在 Angular 中调用 Node Js passport-auth0 API

Angular 问题和“没有 'Access-Control-Allow-Origin' 标头” - 使用 OAuth 2、Passport、Express 和 Node

使用 Angular 7 前端启动 Spring-Boot 应用程序时无法加载资源错误(缺少资源)