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

时间:2019-09-02 18:23:54

标签: docker graphql apollo-client hasura

我尝试使用Passport.js Auth Webhook样板here在我的应用中设置自定义身份验证。我遵循自述文件,尝试首先在本地测试安装程序。我可以使用/signup API通过Postman成功创建用户,也可以使用/login API来接收令牌。我实现了一个简单的登录表单,并尝试通过已创建的用户使用用户名和密码向/login API发出请求,然后收到带有令牌的响应并将其保存在本地存储中以添加{{ 1}}。然后,当我尝试访问提出了graphQL请求的页面时,我只得到了这个Authorization: Bearer <token>。不使用通过Webhook进行的身份验证处理,通过使用标头中的Error: GraphQL error: Internal Server Error,它可以正常工作。我昨天尝试过的。今天,当我像昨天一样在本地启动所有服务器时,我什至无法通过Postman获得成功的请求。我还要添加HASURA_GRAPHQL_ADMIN_SECRET-> HASURA_GRAPHQL_AUTH_HOOK(我从授权标头中删除了管理员机密以启用Webhook),并且还设置了用户访问todos表的权限,例如显示here

我可能做错了什么?这是我的设置。让我知道您是否需要更多信息

这是为了使Hasura GraphQL引擎和Postgres作为Docker容器运行,显示为here(我的http://localhost:8081/webhook文件):

docker-compose.yaml

password.js样板项目正在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: 上运行

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

主应用正在http://localhost:8080上运行

1 个答案:

答案 0 :(得分:2)

所以有两个问题:

  1. 就像评论中的@praveenweb一样(对于我的Mac,我必须用localhost替换host.docker.internal,以使容器可以访问主机的身份验证服务器。因此,代替HASURA_GRAPHQL_AUTH_HOOK: http://localhost:8081/webhook-> HASURA_GRAPHQL_AUTH_HOOK: http://host.docker.internal:8081/webhook

  2. 第二天之所以我没有成功做出响应,是因为我完全忘记在here这样的环境变量中设置DATABASE_URL。因此,在我的情况下,export DATABASE_URL=postgres://postgres:@localhost:5432/postgres

现在一切正常。希望这也会对其他人有所帮助。