我正在尝试一起使用jwt快速中间件和postgraphile中间件,我想添加一个例外,以便在graphiql接口中使用身份验证令牌。我知道 postgraphile 在/graphql
上启动 graphql,在/graphiql
上启动 graphiql,除非另有配置。所以在我的 jwt 中间件初始化中,我正在这样做:
app.use(jwt({ secret: process.env.JWT_SECRET}).unless({path: ['/', //graphiql/i, //graphql/i, /auth/i]}));
这使得它如此/graphiql
、/graphql
和/auth
路由不需要身份验证令牌。这似乎工作正常,因为我可以很好地访问 graphiql 接口,并且我正在构建的 graphql 查询工作正常。但是,在我的快递终端中,它仍然试图连接一些东西,当我加载时会抛出No authorization token found
http://localhost:3000/graphiql
关于它可能试图击中的其他想法,我还必须添加到 JWT 中间件中的unless()
方法中?
PostGraphile目前从/_postgraphile/*
加载GraphiQL资产(JS,CSS(,所以你可能想把这些资产列入白名单。
另一种方法是在添加jwt
中间件之前挂载postgraphile
- 这样它就不会受到它的影响,并且您不需要维护.unless
列表。
app.use(postgraphile(...));
app.use(jwt(...));
app.use(...);