GraphQL 实现“不允许”
Posted
技术标签:
【中文标题】GraphQL 实现“不允许”【英文标题】:GraphQL implement "not permitted" 【发布时间】:2021-02-18 01:58:23 【问题描述】:我有一个由我实现的权限系统管理的 GraphQL API。
我尝试使用 Graphql-shield,但如果客户端请求禁止字段,我不想在整个请求中出错,因此我实现了自己的权限系统。
现在,我需要解决一个问题:
我实现权限系统的方式意味着检查每个字段是否允许,如果不允许则返回 null。但是,我想返回一些指示,表明该字段实际上不是 null,而是该字段“不允许”。
我考虑过两种方式:
在每次检查期间,我将所有不可访问的字段附加到某个查询范围的变量,并将其与查询一起返回(可能在某种中间件中) 我使用“允许”字段扩展架构中的所有对象,并在该字段中返回权限值有什么建议吗?
【问题讨论】:
【参考方案1】:恕我直言,不值得付出努力...... api faq 或文档(在 graphiql/playground 中可用)可以包含有关“意外空值”、ACL 响应等的通知。这对于大多数用例来说已经足够了。
如果您仍想在响应扩展中包含一些 [debug] 信息,那么 f.e. https://github.com/apollographql/apollo-tracing,- 在这种情况下:
只需附上“字段访问被拒绝”[结构化]通知列表即可; 在某些上下文对象中收集它们(在解析器中/从解析器中),附加到中间件 (?) 中,然后返回整体响应;使其也可配置(调试模式)。
【讨论】:
以上是关于GraphQL 实现“不允许”的主要内容,如果未能解决你的问题,请参考以下文章
为什么GitHub的Graphql和Yelp GraphQL不允许多个排序依据字段?
如何使用环回 4 进行修复(将 rest 转换为 graphql):OPTIONS http://localhost:3001/graphql 405(不允许的方法)