背景:
我有一组模型,包括用户和各种其他模型,其中一些包含对用户的引用。我通过Graffiti生成的 GraphQL API 公开这些模型以进行查询,该 API 由使用graffiti-mongoose适配器的 Mongo 数据库提供支持。我当前的 REST API(我正在迁移到 GraphQL)使用 JSON Web Tokens 来验证用户,并在服务器端有一些自定义权限逻辑来处理访问控制。
问题:
我想根据当前登录用户限制对 GraphQL 中对象的访问。某些模型应该可以通过未经身份验证的调用进行读取。大多数其他模型应该只能由创建它们的用户访问。通过 Graffiti 生成的 API 管理对对象的访问控制的最佳方式是什么?
一般来说,GraphQL 是否有良好的访问控制模式?特别是,有没有什么好的例子或库可以用 Graffiti 来做这件事?
笔记:
我知道已经为 graffiti-mongoose 实现了 pre-hook 和 post-hook ,并且它们可用于进行基本的二进制检查以进行身份验证。我想看看如何在 GraphQL API 中使用更详细的访问控制逻辑。将来,我们将希望支持管理员之类的东西,这些管理员有权访问由特定用户组(例如,其隶属关系包括管理员的用户)创建的模型实例。