[토큰 재발급 로직 코딩하기] 토큰 재발급 후 sub 정보 사라짐
411
작성한 질문수 8
signToken(user: Pick<UsersModel, 'email' | 'id'>, isRefreshToken: boolean) {
const payload = {
email: user.email,
sub: user.id,
type: isRefreshToken ? 'refresh' : 'access',
};
return this.jwtService.sign(payload, {
secret: JWT_SECRET,
// seconds
expiresIn: isRefreshToken ? 3600 : 300,
});
}
async rotateToken(token: string, isRefreshToken: boolean) {
const decoded = this.jwtService.verify(token, {
secret: JWT_SECRET,
});
if(decoded.type !== 'refresh'){
throw new UnauthorizedException('토큰 재발급은 Refresh 토큰으로만 가능합니다!');
}
return this.signToken({
...decoded,
}, isRefreshToken);
}토큰 생성 시 payload에서 sub에 user.id를 할당하고 있는데 재발급시 decoded 객체를 그대로 할당하면 sub 정보가 사라지지 않나요?
답변 1
1
안녕하세요!
확인해봤는데 말씀하신게 맞습니다.
sub를 할당하는 로직에서 버그가 있습니다.
{...decoded, id:decoded.sub} <- 이런식 또는 비슷한 형태의 로직 추가가 필요하네요. decoded가 any 타입으로 반환되기 때문에 빌드타임 에러가 없습니다.
감사합니다!
0
해당 질문자님의 버그 발견으로 인해 complete 옵션이 추가 된게 맞나요 ?!
강의 보고 개인 프로젝트에 적용중에 이상이 없는데 질문 사항에 버그가 있다는걸 알게 됬는데 어디부분이 버그인지를 모르겠네요...
rotateToken(token: string, isRefreshToken: boolean) {
const decoded = this.jwtService.verify(token, {
secret: this.configService.get<string>(ENV_JWT_SECRET_KEY),
complete: true
});
cascade 질문
0
38
1
@types/bcrypt 설치과정이 누락된것같습니다.
0
45
1
process.env port key 에러
0
45
1
추상화
0
48
1
[공유] DTO optional 필드가 undefined로 잡혀 TypeORM 조건이 깨지는 현상
0
94
2
where 키워드가 들어가는 메서드와 아닌 메서드
0
56
1
BearerTokenGuard에서 db를 조회해서 유저 정보를 불러오는 이유?
0
69
1
app.controller app.service 는 지워도되나요?
0
69
1
@JoinColumn을 쓰는 경우와 안쓰는 경우의 차이
0
78
1
포트 3000에서 listen하는 곳까지 넘어가지 않습니다.
0
64
1
PickType 사용 시 `as const`를 꼭 사용해야 하나요?
0
102
2
socket connect 오류
0
96
2
강의를 들으면서 궁금한 점
0
97
2
DELETE 요청의 반환값은 어떤 기준으로 결정하는 게 좋을까요?
0
60
2
커리큘럼 질문
0
98
2
put 요청은 언제
0
90
3
typeorm VS prisma
0
344
2
142 강의 > 4:00 > 포스트멘 활용 관련 질문 드립니다.
0
76
2
User 데코레이터 버그 수정 전달드립니다.
0
67
1
git 주소 부탁드립니다.
0
112
2
nest g resource 명령어 에러
0
99
2
로그인 엔드포인트 관련 질문
0
84
2
yarn으로 express 다운 후 node 2_server.js 실행 안되는 경우
0
146
3
"흔히 사용되는 메서드" 강의 관련 질문입니다~
0
95
2





