问题描述
我有一个GraphQL API,该API由我实现的权限系统控制。
我尝试使用Graphql-shield,但是如果客户端请求禁止字段,我不想在整个请求中出错,所以我实现了自己的权限系统。
现在,我需要解决一个问题:
我实现权限系统的方式意味着检查每个字段是否被允许,如果不允许,则返回null。但是,我想返回一些指示,表明该字段实际上不是空的,但是该字段是“不允许的”。
我考虑过两种方法:
- 在每次检查期间,我都将一些不可访问的字段附加到某个查询范围的变量中,并将其与查询一起返回(可能在某种中间件中)
- 我使用“ permitted”字段扩展架构中的所有对象,并在其中返回权限值
有什么建议吗?
解决方法
恕我直言,这不值得付出努力... api常见问题或文档(可在graphiql / playground中找到)可以包含有关“意外的null”,ACL响应等的通知。对于大多数用例而言,就足够了。
如果您仍想在响应扩展中包括一些[debug]信息,则为https://github.com/apollographql/apollo-tracing,在这种情况下:
- 只需附上“拒绝现场访问” [结构化]通知的列表;
- 在总的响应返回之前,在某个上下文对象中(从解析器中/从解析器中)收集它们,并附加到中间件(?)中;
也使其可配置(调试模式)。