[NestJS] JWT 사용하기

Younghwan Cha·2023년 6월 12일
0

Nest.js

목록 보기
4/27
post-thumbnail

NestJS 에서 JWT 사용하기


필요한 패키지들을 다운로드 받는다.

$ npm i @nestjs/jwt passport-jwt
$ npm install --save @nestjs/passport passport passport-local @nestjs/jwt passport-jwt
$ npm install --save-dev @types/passport-local @types/passport-jwt

먼저 auth 모듈을 생성하고 auth/auth.service.ts 를 정의한다.

// auth/auth.service.ts

import { Injectable, UnauthorizedException } from '@nestjs/common';
import { UsersService } from '../users/users.service';
import { JwtService } from '@nestjs/jwt';

@Injectable()
export class AuthService {
  constructor(
    private usersService: UsersService,
    private jwtService: JwtService
  ) {}

  async signIn(username, pass) {
    const user = await this.usersService.findOne(username);
    if (user?.password !== pass) {
      throw new UnauthorizedException();
    }
    const payload = { sub: user.userId, username: user.username };
    return {
      access_token: await this.jwtService.signAsync(payload),
    };
  }
}

이후에, jwtModuleauthModule 을 추가해준다.

auth/auth.module.tsJS

import { Module } from '@nestjs/common';
import { AuthService } from './auth.service';
import { UsersModule } from '../users/users.module';
import { JwtModule } from '@nestjs/jwt';
import { AuthController } from './auth.controller';
import { jwtConstants } from './constants';

@Module({
  imports: [
    UsersModule,
    JwtModule.register({
      secret: process.env.JWT_SECRET,
      signOptions: { expiresIn: '60s' },
    }),
  ],
  providers: [AuthService],
  controllers: [AuthController],
  exports: [AuthService],
})
export class AuthModule {}

[NestJS jwt] https://docs.nestjs.com/security/authentication#jwt-token
[JwtModule github] https://github.com/nestjs/jwt/blob/master/README.md

profile
개발 기록

0개의 댓글