</>
⌕
Mid #jwt#passport#auth#guard

Triển khai JWT authentication với Passport trong NestJS

⚡ Trả lời nhanh

Dùng @nestjs/passport với passport-jwt: JwtStrategy extends PassportStrategy(Strategy) cấu hình cách lấy token và secret, validate() trả về user gắn vào req.user. Bảo vệ route bằng AuthGuard('jwt'). Login ký token bằng JwtService.signAsync.

@Injectable()
export class JwtStrategy extends PassportStrategy(Strategy) {
  constructor(config: ConfigService) {
    super({
      jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
      ignoreExpiration: false,
      secretOrKey: config.getOrThrow('JWT_SECRET'),
    });
  }
  validate(payload: { sub: number; role: string }) {
    return { id: payload.sub, role: payload.role }; // -> req.user
  }
}

@Injectable()
export class JwtAuthGuard extends AuthGuard('jwt') {}

Login: kiểm tra mật khẩu bằng bcrypt rồi this.jwt.signAsync(payload) (cấu hình JwtModule.register với expiresIn).

🃏 Ôn bằng flashcard