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