nestjs: как вызвать ошибку AuthenticationError, когда я использую GraphQL - PullRequest
0 голосов
/ 02 декабря 2019

Я пишу модуль GqlAuthGuard, но он всегда выдает UnauthorizedException, когда JWT истек или был запрещен. Это приведет к ошибке в stacktrace.

Я хочу выбросить AuthenticationError (из apollo-server-express).

Как я могу это сделать?

import { Injectable, ExecutionContext } from '@nestjs/common'
import { AuthGuard } from '@nestjs/passport'
import { GqlExecutionContext } from '@nestjs/graphql'

@Injectable()
export class GqlAuthGuard extends AuthGuard('jwt') {
  public getRequest(context: ExecutionContext) {
    const ctx = GqlExecutionContext.create(context)
    return ctx.getContext().req
  }
}

Ошибка авторизации GraphQL

1 Ответ

0 голосов
/ 02 декабря 2019

Вы можете переопределить метод canActivate из класса super (AuthGuard('jwt')), и оттуда вы можете узнать, возвращает ли super.canActivate(req) true или false, сохранив результат в переменной,Если ложь, вы можете выбросить туда свою ошибку вместо UnauthorizedException, который выбрасывает Nest.

...