DEV Community

Cover image for "NestJS authentication in 5 minutes"
Gajendra Singh
Gajendra Singh

Posted on

"NestJS authentication in 5 minutes"

NestJS Authentication in 5 Minutes πŸ”

Authentication in NestJS sounds complicated at first…

But the actual flow is surprisingly simple πŸ‘‡

User Login
↓
Verify Credentials
↓
Generate JWT Token
↓
Protected Routes
↓
Validate Token

1️⃣ Install required packages

npm install @nestjs/jwt @nestjs/passport passport passport-jwt bcrypt
npm install -D @types/passport-jwt
Enter fullscreen mode Exit fullscreen mode

2️⃣ Generate auth files

nest g module auth
nest g service auth
nest g controller auth
Enter fullscreen mode Exit fullscreen mode

3️⃣ Configure JWT (auth.module.ts)

@Module({
  imports: [
    JwtModule.register({
      secret: "super-secret-key",
      signOptions: {
        expiresIn: "1d",
      },
    }),
  ],
})
export class AuthModule {}
Enter fullscreen mode Exit fullscreen mode

4️⃣ Create login function (auth.service.ts)

@Injectable()
export class AuthService {
  constructor(
    private jwtService: JwtService,
  ) {}

  async login(user: any) {
    const payload = {
      id: user.id,
      email: user.email,
    };

    return {
      access_token:
        this.jwtService.sign(payload),
    };
  }
}
Enter fullscreen mode Exit fullscreen mode

5️⃣ Protect routes with JWT

@UseGuards(AuthGuard("jwt"))
@get("profile")
getProfile(@Request() req) {
return req.user;
}

Authentication = Login β†’ Token β†’ Verify β†’ Access πŸ”₯

⚠️ Bonus tip: Never store passwords directly. Use:

bcrypt.hash()
bcrypt.compare()
Enter fullscreen mode Exit fullscreen mode

What confused you most when learning authentication? πŸ‘‡

Top comments (0)