Angular JWT 令牌解析为 json 问题

Posted

技术标签:

【中文标题】Angular JWT 令牌解析为 json 问题【英文标题】:Angular JWT token parsing to json issue 【发布时间】:2018-11-29 11:11:05 【问题描述】:

我已经在 jwt.io 上验证了我的 JWT

但是当我尝试解析响应时:

  login(model: any) 
return this.http
  .post(this.baseURI + 'login', model, this.requestOptions())
  .map((response: Response) => 
    const user = response.json();
    if (user) 
      localStorage.setItem('token', user.token);
      this.decodedToken = this.jwtHelper.decodeToken(user.token);
      console.log(this.decodedToken);
      this.userToken = user.token;
    
  )
  .catch(this.handleError);

它抛出一个错误说明:

尝试解析对json的响应时产生错误:response.json(); 一点帮助将不胜感激。

【问题讨论】:

"Angular is running in the development mode..." 不是错误,它只是一条信息消息,告诉您 Angular 正在开发模式下运行。如果您执行“ng serve --prod”而不是“ng-serve”,您会发现它不会这么说。 附加了错误的图片。请立即查看错误。 请删除 this.requestOptions() requestoptions 是标头选项。 您能指定您的回复文本吗? 【参考方案1】:

由于令牌以 e 开头,并且您的错误表明它在预期为 Json 文档的位置 0 处收到意外的 e,听起来您可能会收到包含令牌的响应正文原始文本,而不是您的代码所期望的 Json User 对象。

【讨论】:

以上是关于Angular JWT 令牌解析为 json 问题的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 JWT 令牌中的属性更改前端(Angular)视图上显示的内容?

如何在 Angular 8 中对客户端的 JWT 解码令牌有效负载进行编码?

当它是具有 angular2 的外部源时,标头中没有 jwt 令牌授权

angular2-jwt 编译元数据解析器错误

用于以JWE JSON序列化格式解析JWT令牌的Java库

如何检查 JWT 令牌是不是在 Angular 8 中过期