Объясните цель пакета @nestjs/jwt в NestJS?
Пакет @nestjs/jwt
— это библиотека, разработанная для использования в рамках фреймворка NestJS, которая предоставляет удобные средства для работы с JSON Web Tokens (JWT). JWT является стандартом для передачи информации между двумя сторонами безопасным образом, и он широко используется для аутентификации и авторизации пользователей в веб-приложениях.
Основные цели использования @nestjs/jwt
:
Установка
Чтобы начать использование @nestjs/jwt
, вам требуется установить его и зависимости. Вот как это сделать:
npm install @nestjs/jwt passport-jwt
Пример использования
Давайте рассмотрим простой пример использования @nestjs/jwt
в NestJS для создания и проверки JWT.
// auth.module.ts
import { Module } from '@nestjs/common';
import { JwtModule } from '@nestjs/jwt';
import { AuthService } from './auth.service';
import { AuthController } from './auth.controller';
@Module({
imports: [
JwtModule.register({
secret: 'ваш_секретный_ключ', // Лучше хранить в .env файле
signOptions: { expiresIn: '60s' }, // Время действия токена
}),
],
providers: [AuthService],
controllers: [AuthController],
})
export class AuthModule {}
// auth.service.ts
import { Injectable } from '@nestjs/common';
import { JwtService } from '@nestjs/jwt';
@Injectable()
export class AuthService {
constructor(private readonly jwtService: JwtService) {}
async login(user: any) {
const payload = { username: user.username, sub: user.userId };
return {
access_token: this.jwtService.sign(payload), // Генерация токена
};
}
}
// auth.controller.ts
import { Controller, Post, Body } from '@nestjs/common';
import { AuthService } from './auth.service';
@Controller('auth')
export class AuthController {
constructor(private readonly authService: AuthService) {}
@Post('login')
async login(@Body() user: any) {
return this.authService.login(user);
}
}
// jwt-auth.guard.ts
import { Injectable } from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';
@Injectable()
export class JwtAuthGuard extends AuthGuard('jwt') {}
Таким образом, с использованием @nestjs/jwt
, вы можете эффективно управлять аутентификацией и авторизацией пользователей в вашем приложении на NestJS. Это позволяет вам строить более безопасные и масштабируемые веб-приложения.