我尝试在这里使用 Passport.js Auth Webhook Boilerplate在我的应用程序中设置自定义身份验证。我按照自述文件尝试先在本地测试设置。我可以使用 API 通过 Postman 成功创建用户/signup
,也可以使用/login
API 接收令牌。我实现了一个简单的登录表单,并尝试/login
使用已创建用户的用户名和密码向 API 发出请求,然后我收到带有令牌的响应并将其保存在本地存储中以将其添加Authorization: Bearer <token>
到标题中。然后,当我试图访问一个我发出 graphQL 请求的页面时,我只得到了这个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:
passport.js 样板项目正在运行http://localhost:8081
hasura/graphql 引擎正在运行http://localhost:8080
主应用程序正在运行http://localhost:3000