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

问题描述

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

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

解决方法

我自己想出来的

    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;
    }