사용자가 로그인하면 JWT를 생성하고, 이를 사용하여 요청에 대한 인증을 수행하거나 특정 권한을 부여하여 API보안을 위하여 사용하고 이전 포스팅에 authGuard로 JWT를 확인하여 API를 사용할 수 있게끔 해봤습니다.
설치 방법
$ npm install --save @nestjs/jwt
import { JwtModule } from '@nestjs/jwt';
@Module({
imports: [
JwtModule.register({
global:true,
secret: process.env.JWT_SECRET,
})
]
})
전역으로 사용하기 위해 global을 true로 설정하였고 secret값에 환경변수로 관리하여 설정 해주었습니다.
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를 발행하여 사용 할 수 있습니다.
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에 담은 값을 확인 할 수있습니다.