Nest.js - Passport-jwt

김세겸·2023년 3월 8일
0

NestJS

목록 보기
16/18
post-thumbnail

1. 설치

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

2. 적용

1. strategy 만들기

import { PassportStrategy } from "@nestjs/passport";
import { Request } from "express";
import { Strategy } from "passport-jwt";

export class JwtStrategy extends PassportStrategy(Strategy) {
    constructor() {
        super({
            jwtFromRequest: (req: Request) => {
                return req.cookies['access_token'];
            },
            secretOrKey: process.env.JWT_SECRET,
        })
        
    }

    async validate(payload) {    
        console.log(payload);  
        return payload;
    }
}

2. guard 만들기

import { Injectable } from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';

@Injectable()
export class JwtAuthGuard extends AuthGuard('jwt') {}

3. guard 등록하기

가드는 다른 프로바이더들과 다르게 모듈에 등록하지 않고 contoller에서 @UseGuards() 데코레이터를 사용하여 등록을 한다.

 @Get('test')
    @UseGuards(JwtAuthGuard)
    async test(@Req() req) {
        console.log(req.user);
        
    }

등록이 완료 되면 strategy에 따라 jwt에 담긴 내용을 req.user에 담아 준다.

0개의 댓글