JWT 에 대한 내용은 문서를 참고하시거나 제 티스토리블로그에 정리 돼있습니다.
@nestjs/jwt
//nestjs에서 jwt를 사용하기 위해 필요한모듈
@nestjs/passport
//nestjs에서 passport를 사용하기위해 필요한 모듈
passport
//passport모듈
passport-jwt
//jwt모듈
npm install @nestjs/jwt @nestjs/passport passport passport-jwt --save
@Module({
imports: [JwtModule.register({
secret:"Secret1234",//시크릿텍스트
signOptions:{
expiresIn: 60*60,//토큰유지시간
}
}),
PassportModule.register({defaultStrategy:'jwt'})
먼저 DI를 해줘야 service해줄때 사용할 수 있다.
async signIn(
authcredentilDto: AuthCredentialDto,
): Promise<{ accessToken: string }> {
const { username, password } = authcredentilDto;
const user = await this.userRepository.findOne({ username });
if (user && (await bcrypt.compare(password, user.password))) {
//유저토큰 생성(Secret + Paylozd)
const payload = { username }; //패이로드에 중요한 정보는 넣으면 안된다.
const accessToken = await this.jwtService.sign(payload); //여기서 알아서 payload를합쳐서 만들어준다.
return { accessToken };
} else {
throw new UnauthorizedException('login failed');
}
}