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
메서드를 구현하여 사용자 정보를 확인하는 로직을 작성합니다. 디비 연동, 비밀번호 검증 등 사용자 인증에 필요한 로직을 구현할 수 있습니다.
이제, LocalStrategy
와 AuthService
를 AuthModule
에 등록하고, 해당 모듈을 애플리케이션 모듈에서 import 한 후, 필요한 라우터에서 @UseGuards(AuthGuard('local'))
데코레이터를 추가하여 인증 기능을 사용할 수 있습니다.
이렇게 NestJS와 Passport.js를 활용하여 웹 애플리케이션에서 인증 기능을 구현할 수 있습니다.
더 자세한 내용은 NestJS 공식 문서를 참고하시기 바랍니다.
요약
이번 글에서는 자바스크립트로 작성된 NestJS 웹 애플리케이션에서 인증을 구현하는 방법에 대해 알아보았습니다. NestJS와 Passport.js를 사용하여 사용자 인증을 처리하고, 필요한 라우터에서 @UseGuards(AuthGuard('local'))
를 사용하여 인증 기능을 적용할 수 있습니다.
#NestJS #인증