[typescript] 타입스크립트로 Nest.js 인증 및 JWT 토큰 관리하기
Nest.js는 타입스크립트로 작성된 서버 사이드 애플리케이션을 구축하는 데 사용되는 프레임워크입니다. 이번 블로그에서는 Nest.js에서 타입스크립트를 사용하여 JWT(JSON Web Token)를 이용한 사용자 인증 및 토큰 관리에 대해 알아보겠습니다.
목차
Nest.js와 타입스크립트
Nest.js는 Angular와 비슷한 구조를 가지고 있으며, 컨트롤러, 모듈, 서비스 등으로 구성되어 있습니다. 또한, Nest.js는 타입스크립트를 지원하므로 코드의 가독성 및 유지보수가 용이합니다.
JWT 토큰 및 사용자 인증 구현
먼저, 사용자 인증을 위해 JWT 토큰을 발급하고 인증하는 과정을 구현해야 합니다. 아래는 간단한 예시 코드입니다.
import * as jwt from 'jsonwebtoken';
@Injectable()
export class AuthService {
constructor(private userService: UserService) {}
async signToken(user: User): Promise<string> {
const payload = { username: user.username, sub: user.userId };
return jwt.sign(payload, 'secretKey', { expiresIn: '1h' });
}
async validateUser(username: string, password: string): Promise<any> {
const user = await this.userService.findByUsername(username);
if (user && user.password === password) {
return user;
}
return null;
}
}
Nest.js 앱에 JWT 인증 미들웨어 추가
다음으로, Nest.js 애플리케이션에 JWT 인증 미들웨어를 추가하여 요청을 인증하는 과정을 구현합니다.
import { Injectable, NestMiddleware } from '@nestjs/common';
import { Request, Response, NextFunction } from 'express';
@Injectable()
export class AuthMiddleware implements NestMiddleware {
use(req: Request, res: Response, next: NextFunction) {
const token = req.headers.authorization;
if (token) {
// 토큰 유효성 검사 로직 구현
next();
} else {
res.status(401).send('Unauthorized');
}
}
}
JWT 토큰 관리
마지막으로, JWT 토큰의 관리는 토큰의 발급, 갱신, 검증 및 만료 등을 관리해주어야 합니다. 이러한 토큰 관리 로직은 Nest.js의 서비스를 통해 구현할 수 있습니다.
이상으로 Nest.js에서 타입스크립트를 활용한 JWT 토큰 인증 및 관리에 대해 알아보았습니다. Nest.js와 타입스크립트를 사용하여 보안적인 웹 애플리케이션을 구축할 때 JWT 토큰을 사용하는 것은 매우 유용합니다.
더 자세한 내용은 Nest.js 공식 문서를 참고하시기 바랍니다.