자바스크립트로 작성된 NestJS 웹 애플리케이션의 인증 방법

NestJS는 Node.js 기반의 프레임워크로, 웹 애플리케이션의 개발을 쉽고 간편하게 만들어줍니다. 이 글에서는 NestJS를 사용하여 웹 애플리케이션에서 인증을 구현하는 방법에 대해 알아보겠습니다.

Passport.js를 사용한 인증

NestJS에서는 주로 Passport.js 라이브러리를 사용하여 인증 기능을 구현합니다. Passport.js는 규모가 큰 소셜 로그인 서비스에서부터 로컬 인증까지 다양한 인증 방식을 지원합니다.

먼저, NestJS 프로젝트의 의존성에 Passport.js를 추가해야합니다. package.json 파일에서 dependencies 항목에 다음과 같이 passport, passport-local 등의 모듈을 추가합니다.

"dependencies": {
  "passport": "^0.4.1",
  "passport-local": "^1.0.0"
}

다음으로, AuthService라는 클래스를 생성하여 인증과 관련된 로직을 구현합니다. 이 클래스는 PassportStrategy를 상속받아 구현할 수 있습니다.

이제, 사용자의 로그인 정보를 확인하는 validateUser 메서드를 구현합니다. 이 메서드에서는 DB와 연동하여 사용자 정보를 확인하고, 유효한 사용자인 경우 done(null, user)와 같이 Passport에게 사용자 정보를 전달합니다.

import { Injectable } from '@nestjs/common';
import { PassportStrategy } from '@nestjs/passport';
import { Strategy } from 'passport-local';
import { AuthService } from './auth.service';

@Injectable()
export class LocalStrategy extends PassportStrategy(Strategy) {
  constructor(private authService: AuthService) {
    super();
  }

  async validateUser(username: string, password: string): Promise<any> {
    const user = await this.authService.validateUser(username, password);
    if (!user) {
      throw new UnauthorizedException();
    }
    return user;
  }
}

AuthService 클래스에는 validateUser 메서드를 구현하여 사용자 정보를 확인하는 로직을 작성합니다. 디비 연동, 비밀번호 검증 등 사용자 인증에 필요한 로직을 구현할 수 있습니다.

이제, LocalStrategyAuthServiceAuthModule에 등록하고, 해당 모듈을 애플리케이션 모듈에서 import 한 후, 필요한 라우터에서 @UseGuards(AuthGuard('local')) 데코레이터를 추가하여 인증 기능을 사용할 수 있습니다.

이렇게 NestJS와 Passport.js를 활용하여 웹 애플리케이션에서 인증 기능을 구현할 수 있습니다.

더 자세한 내용은 NestJS 공식 문서를 참고하시기 바랍니다.

요약

이번 글에서는 자바스크립트로 작성된 NestJS 웹 애플리케이션에서 인증을 구현하는 방법에 대해 알아보았습니다. NestJS와 Passport.js를 사용하여 사용자 인증을 처리하고, 필요한 라우터에서 @UseGuards(AuthGuard('local'))를 사용하여 인증 기능을 적용할 수 있습니다.

#NestJS #인증