如何为 REST 和 GraphQL 使用相同的 RoleGuard?

Posted

技术标签:

【中文标题】如何为 REST 和 GraphQL 使用相同的 RoleGuard?【英文标题】:How can I use the same RoleGuard for REST and GraphQL? 【发布时间】:2021-06-16 13:49:00 【问题描述】:

我有这个问题: nestjs context.swithToHttp().getRequest() returns undefined

不同之处在于我的应用程序需要支持 GraphQL 和 REST,但实际上,我想不出任何方法可以为 GraphQL 和 REST 使用相同的 RoleGuard,因为它们的上下文不同。

【问题讨论】:

【参考方案1】:

我自己想办法

    let user: User;

    if (context.getType() === 'http') 
      user = context.switchToHttp().getRequest().user;
     else if (context.getType<GqlContextType>() === 'graphql') 
      const ctx = GqlExecutionContext.create(context);
      user = ctx.getContext().req.user;
    

【讨论】:

以上是关于如何为 REST 和 GraphQL 使用相同的 RoleGuard?的主要内容,如果未能解决你的问题,请参考以下文章

GraphQL 是不是具有与 REST 相同的缓存能力

如何为 GraphQL 使用数组模式类型

如何为 DynamoDB 创建 GraphQL 查询

Python序列化Rest和GraphQL相同

如何为 graphql-java-servlet 和 Micronaut 控制器配置 GraphQL servlet 端点?

如何为 GraphQL 服务器设计以下解析器?