AWS Cognito身份验证适用于Postman,但不适用于Angular Web应用程序

时间:2019-12-27 07:23:32

标签: node.js amazon-web-services authentication aws-lambda amazon-cognito

我为服务器上部署的所有API配置了身份验证。现在,当我按邮递员到达终点时。它工作正常,接受jwt令牌来访问其他API,但是当我用Angular应用程序访问相同的API时,即使在标题中通过了身份验证后,它仍表示未授权错误。

请帮助我!

代码如下:

createHeader() {
    return (this.header = new HttpHeaders({
      "Content-Type": "application/json",
      Authorization: localStorage.getItem("token")
    }));
  }

2 个答案:

答案 0 :(得分:1)

Postman很有可能在auth令牌中添加了“ Bearer”前缀,这在上面的代码中没有发生。

尝试:

  createHeader() {
    return (this.header = new HttpHeaders({
      "Content-Type": "application/json",
      Authorization: `Bearer ${localStorage.getItem("token")}`
    }));
  }

答案 1 :(得分:0)

实际上,问题与cors有关,cors不允许Angular应用通过亚马逊网关访问任何lambda API。

解决方案:有两种方法,如下所示:

1)您可以在终端上运行以下命令,这将使您点击API网关API:

google-chrome --disable-web-security --user-data-dir="/tmp/chrome_tmp"

2)第二种方法涉及编辑您的serverless.yml文件:

- http:
      path: permission/
      method: any
      cors: true

您必须将cors声明为true。现在的问题是它将做什么?答案如下:

无服务器框架允许您详细配置CORS。 cors:true是以下配置的快捷方式。

cors:
origins:
    - '*'
headers:
    - Content-Type
    - X-Amz-Date
    - Authorization
    - X-Api-Key
    - X-Amz-Security-Token
allowCredentials: false