如何在GraphQL查询中检查权限和其他条件?

如何在GraphQL查询中检查权限和其他条件?,第1张

如何在GraphQL查询中检查权限和其他条件?

您可以在resolve函数或模型层中检查用户的权限。这是您必须采取的步骤:

  1. 在执行查询之前,对用户进行身份验证。这取决于您的服务器,通常发生在graphql之外,例如通过查看与请求一起发送的cookie。有关如何使用Passport.js进行 *** 作的更多详细信息,请参见此中型帖子。
  2. 将经过身份验证的用户对象或用户ID添加到上下文中。在express-graphql中,您可以通过context参数来实现:
        app.use('/graphql', (req, res) => {      graphqlHTTP({ schema: Schema, context: { user: req.user } })(req, res);    }
  1. 使用resolve函数内部的上下文,如下所示:
        resolve(parent, args, context){      if(!context.user.isAdmin){        args.isPublic = true;      }      return PostModel.find(args).exec();    }

您可以直接在resolve函数中进行授权检查,但是如果您有模型层,我强烈建议您通过将用户对象传递到模型层来在其中实现。这样,您的代码将更具模块化,更易于重用,并且您不必担心忘记解析器中的某些检查。

有关授权的更多背景,请查看此帖子(也由我自己撰写): GraphQL中的Auth-第2部分



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5476990.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-12
下一篇2022-12-12

发表评论

登录后才能评论

评论列表(0条)

    保存