
您可以在resolve函数或模型层中检查用户的权限。这是您必须采取的步骤:
- 在执行查询之前,对用户进行身份验证。这取决于您的服务器,通常发生在graphql之外,例如通过查看与请求一起发送的cookie。有关如何使用Passport.js进行 *** 作的更多详细信息,请参见此中型帖子。
- 将经过身份验证的用户对象或用户ID添加到上下文中。在express-graphql中,您可以通过context参数来实现:
app.use('/graphql', (req, res) => { graphqlHTTP({ schema: Schema, context: { user: req.user } })(req, res); }- 使用resolve函数内部的上下文,如下所示:
resolve(parent, args, context){ if(!context.user.isAdmin){ args.isPublic = true; } return PostModel.find(args).exec(); }您可以直接在resolve函数中进行授权检查,但是如果您有模型层,我强烈建议您通过将用户对象传递到模型层来在其中实现。这样,您的代码将更具模块化,更易于重用,并且您不必担心忘记解析器中的某些检查。
有关授权的更多背景,请查看此帖子(也由我自己撰写): GraphQL中的Auth-第2部分
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)