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