관리 메뉴

bright jazz music

[nestjs] 인증 기능(auth) 작성하기 본문

Framework/NestJS

[nestjs] 인증 기능(auth) 작성하기

bright jazz music 2024. 12. 26. 18:53

1. 인증기능 구현에 필요한 패키지 설치하기

이미 설치한 패키지도 있을 수 있다.

// JWT(JSON Web Token) 생성/검증을 위한 NestJS 모듈
pnpm add @nestjs/jwt 

// Passport.js를 NestJS에서 사용하기 위한 어댑터/래퍼
pnpm add @nestjs/passport 

// Node.js 인증 미들웨어 라이브러리
pnpm add passport 

// JWT 기반 인증을 위한 Passport 전략
# Authorization 헤더에서 JWT를 추출/검증
pnpm add passport-jwt 

// username/password 기반 인증을 위한 Passport 전략  
// 로그인 시점의 인증 처리
pnpm add passport-local 

// 패스워드 해싱을 위한 라이브러리
pnpm add bcrypt

?/ 각 라이브러리의 TypeScript 타입 정의들 (-D는 개발 의존성)
pnpm add -D @types/passport-jwt @types/passport-local @types/bcrypt

 

2. auth.module.ts

import { Module } from '@nestjs/common';
import { JwtModule } from '@nestjs/jwt';
import { PassportModule } from '@nestjs/passport';
import { MembersModule } from '../members/members.module';
import { AuthService } from './auth.service';
import { AuthController } from './auth.controller';
import { LocalStrategy } from './strategies/local.strategy';
import { JwtStrategy } from './strategies/jwt.strategy';


@Module({
  imports: [
    MembersModule,
    PassportModule,
    JwtModule.register({
      // JWT 토큰을 서명(sign)하고 검증(verify)하는 데 사용되는 비밀 키
      // 이 키를 사용해 토큰이 서버에서 발급된 것이 맞는지, 중간에 변조되지 않았는지 확인
      secret: 'your-secret-key', // 실제 환경에서는 환경변수로 관리 필요
      signOptions: { expiresIn: '1h' },// 토큰 만료 시간
    }),
  ],
  providers: [AuthService, LocalStrategy, JwtStrategy],
  controllers: [AuthController],
  exports: [AuthService],
})
export class AuthModule {}

 

Comments