是否有可能 运行 所有 query/mutation 的中间件,除了任何一个?
Is it possible run a middleware for all query/mutation except any one?
我想为 GraphQL 中的所有 mutation/query 调用调用一个 http 中间件,但不想为一个查询调用?这可能吗?
编辑:
如果用户被软删除,我想为所有需要用户登录的 api 发送用户停用响应。但我不希望 api 再次成为 restore
用户。
不,这是不可能的。我不会在 Lighthouse 添加这样的功能。
如果您需要基于使用哪些 GraphQL 字段的特定逻辑,那属于字段中间件。 HTTP 和 GraphQL 是两个独立的层,不能混为一谈。
不,这在 Lighthouse 中是不可能的。
我建议使用 @guard
指令解决这个问题。
https://lighthouse-php.com/5/security/authentication.html#attemptauthentication-middleware
所以基本上做类似
的事情
extend type Query {
restore(email: String!, password: String!): User
}
然后对于所有其他查询
extend type Query @guard {
viewer: User! @auth
}
默认情况下,如果用户被软删除,则 auth:api
将不允许其登录,因此没有理由对防护进行任何更改。
我想为 GraphQL 中的所有 mutation/query 调用调用一个 http 中间件,但不想为一个查询调用?这可能吗?
编辑:
如果用户被软删除,我想为所有需要用户登录的 api 发送用户停用响应。但我不希望 api 再次成为 restore
用户。
不,这是不可能的。我不会在 Lighthouse 添加这样的功能。
如果您需要基于使用哪些 GraphQL 字段的特定逻辑,那属于字段中间件。 HTTP 和 GraphQL 是两个独立的层,不能混为一谈。
不,这在 Lighthouse 中是不可能的。
我建议使用 @guard
指令解决这个问题。
https://lighthouse-php.com/5/security/authentication.html#attemptauthentication-middleware
所以基本上做类似
的事情extend type Query {
restore(email: String!, password: String!): User
}
然后对于所有其他查询
extend type Query @guard {
viewer: User! @auth
}
默认情况下,如果用户被软删除,则 auth:api
将不允许其登录,因此没有理由对防护进行任何更改。