사용자가 로그인하면 JWT를 생성하고, 이를 사용하여 요청에 대한 인증을 수행하거나 특정 권한을 부여하여 API보안을 위하여 사용하고 이전 포스팅에 authGuard로 JWT를 확인하여 API를 사용할 수 있게끔 해봤습니다.
- JWT를 검사하는 authGuard 이전 포스팅
https://velog.io/@yth1122/NestJs-AuthGard%EB%A1%9C-Api-%ED%98%B8%EC%B6%9C%EC%8B%9C-%EC%9D%B8%EC%A6%9D%EC%A0%95%EB%B3%B4-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0
JWT설치 및 기본 세팅
설치 방법
- 아래 명령어를 통하여 설치를 진행해 줍니다.
$ npm install --save @nestjs/jwt
import { JwtModule } from '@nestjs/jwt';
@Module({
imports: [
JwtModule.register({
global:true,
secret: process.env.JWT_SECRET,
})
]
})
전역으로 사용하기 위해 global을 true로 설정하였고 secret값에 환경변수로 관리하여 설정 해주었습니다.
JWT 발행하기
let payload = {username:'tae',age:25,address:'seoul'}
let response = this.jwtService.signAsync(
payload,
{ expiresIn:'100y' }
).then(token=>{
console.log(token)
}).catch((err)=>{
console.log('error',err);
})
signAsync(token에 넣을 정보,{option})
option에 비밀번호설정, 만료기한 등 위의 module에서 셋팅할 수 있지만 만료기한이 다르거나 jwt 비밀번호 값을 다르게 설정하려면 이 옵션안에 설정하여 각 특징이 다른 jwt를 발행하여 사용 할 수 있습니다.
JWT 검증하기
const payload = await this.jwtService.verifyAsync(
token,
{
secret: process.env.JWT_SECRET
}
)
console.log(payload)
//result
// {username:'tae',age:25,address:'seoul'}
위에서 발급한 토큰을 verifyAsync 함수를 사용활용하여 검증을 하였습니다. verifyAsync(검증할 토큰값 , {option}) option값에 비밀번호를 입력시 아래 결과와 같이 JWT에 담은 값을 확인 할 수있습니다.
참고
'nestjs & nodejs' 카테고리의 다른 글
NestJs TypeOrm Querybuilder 사용하여 쿼리짜보기 (1) | 2023.10.05 |
---|---|
NestJS swagger로 API문서화하기 (0) | 2023.09.26 |
NestJS UseGuards로 Api 호출시 인증정보 확인하기 (1) | 2023.09.21 |
NestJS Controller 알아보기 (0) | 2023.09.18 |
Node version을 프로젝트마다 변경하여 사용하기 (0) | 2023.09.16 |