Hasura 身份验证 Passport.js Auth Webhook 不起作用

ron*_*ory 1 docker graphql apollo-client hasura

我尝试在此处使用 Passport.js Auth Webhook Boilerplate在我的应用程序中设置自定义身份验证。我按照自述文件并尝试首先在本地测试设置。我可以使用 API 通过 Postman 成功创建用户/signup,并使用/loginAPI 接收令牌。我实现了一个简单的登录表单,并尝试使用已创建的用户的用户名和密码向 API 发出请求/login,然后我收到带有令牌的响应并将其保存在本地存储中以将其添加到Authorization: Bearer <token>标头中。然后,当我尝试访问已发出 graphQL 请求的页面时,我只得到了 this Error: GraphQL error: Internal Server Error。在不通过 Webhook 使用身份验证处理的情况下,通过使用HASURA_GRAPHQL_ADMIN_SECRET标头中的 可以毫无问题地工作。这个我昨天已经试过了。今天,当我像昨天一样在本地启动所有服务器时,我什至无法通过 Postman 获得成功的请求。值得一提的是,我添加了HASURA_GRAPHQL_AUTH_HOOK-> http://localhost:8081/webhook(我从授权标头中删除了管理密钥以启用 Webhook),并且还为用户设置了访问 todos 表的权限,如下所示

我可能做错了什么?这是我的设置。如果您需要更多信息,请与我们联系

这是为了让 Hasura GraphQL 引擎和 Postgres 作为 Docker 容器运行,如下所示(我的docker-compose.yaml文件):

version: '3.6'
services:
  postgres:
    image: postgres
    restart: always
    ports:
    - "5432:5432"
    volumes:
    - db_data:/var/lib/postgresql/data
  graphql-engine:
    image: hasura/graphql-engine:v1.0.0-beta.6
    ports:
    - "8080:8080"
    depends_on:
    - "postgres"
    restart: always
    environment:
      HASURA_GRAPHQL_DATABASE_URL: postgres://postgres:@postgres:5432/postgres
      HASURA_GRAPHQL_ENABLE_CONSOLE: "true" # set to "false" to disable console
      HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, query-log
      HASURA_GRAPHQL_ADMIN_SECRET: secret
      HASURA_GRAPHQL_AUTH_HOOK: http://localhost:8081/webhook
volumes:
  db_data:
Run Code Online (Sandbox Code Playgroud)

Passport.js 样板项目正在运行http://localhost:8081

hasura/graphql 引擎正在运行http://localhost:8080

主应用程序正在运行http://localhost:3000

ron*_*ory 5

所以有两个问题:

  1. 就像@praveenweb在评论中所写的那样(在我的情况下是 Mac),我必须将容器替换localhosthost.docker.internal来访问主机的身份验证服务器。所以而不是HASURA_GRAPHQL_AUTH_HOOK: http://localhost:8081/webhook->HASURA_GRAPHQL_AUTH_HOOK: http://host.docker.internal:8081/webhook

  2. 我第二天没有得到成功回复的原因是我完全忘记设置DATABASE_URL环境变量,如下所示。所以就我而言export DATABASE_URL=postgres://postgres:@localhost:5432/postgres

现在一切都按预期进行。希望这对其他人也有帮助。