GithubHelp home page GithubHelp logo

Comments (2)

spali avatar spali commented on April 26, 2024 3

I tried to log the token verification errors on the server.
For this I also overwrite handleRequest in the JWT auth guard for graphql.
Basically I use the exact same implementation as the inherited AuthGuard('jwt') but with additional logging.

Use this the following auth guard on a graphql query or mutation in the resolver:

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

/**
 * Adapted AuthGuard for GraphQL jwt authentication.
 */
@Injectable()
export class JwtAuthGuard extends AuthGuard('jwt') {
  private readonly logger = new Logger(JwtAuthGuard.name);

  getRequest(context: ExecutionContext) {
    const ctx = GqlExecutionContext.create(context);
    const request = ctx.getContext().req;
    return request;
  }

  handleRequest(err, user, info, context) {
    // valid Token: empty log line
    // invalid Token: empty log line
    this.logger.log(err, 'error');

    // valid Token: token object
    // invalid Token: false
    this.logger.log(user, 'user');

    // valid Token: empty log line
    // invalid Token: error object from passport
    this.logger.log(info, 'info');

    // valid Token: no log line at all
    // invalid Token: no log line at all
    this.logger.log(context, 'context');
    if (err || !user) {
      this.logger.error(`JWT Authentication error: ${err}`);
      throw err || new UnauthorizedException();
    }
    return user;
  }
}

my test output is described in the comments above the corresponding logging line.
Basically info contains the error which I would expect in err.

from passport.

kamilmysliwiec avatar kamilmysliwiec commented on April 26, 2024

Please, provide a minimal repository which reproduces your issue.

from passport.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.