File tree Expand file tree Collapse file tree 2 files changed +25
-2
lines changed
Expand file tree Collapse file tree 2 files changed +25
-2
lines changed Original file line number Diff line number Diff line change @@ -60,9 +60,13 @@ export class JwtAuthGuard implements CanActivate {
6060
6161 return true ;
6262 } catch ( refreshError ) {
63+ // refreshToken 디코딩 실패 시 처리 쿠키 비워줌
64+ this . tokenService . clearCookies ( response ) ;
6365 throw new InvalidTokenException ( ) ;
6466 }
6567 } else {
68+ // accessToken 디코딩(만료가 아닌 이유로) 실패 시 처리 쿠키 비워줌
69+ this . tokenService . clearCookies ( response ) ;
6670 throw new InvalidTokenException ( ) ;
6771 }
6872 }
Original file line number Diff line number Diff line change 11import { Injectable } from '@nestjs/common' ;
22import { JwtService } from '@nestjs/jwt' ;
3+ import { Response } from 'express' ;
4+
5+ const HOUR = 2 * 60 * 60 ;
6+ const THREE_MONTHS = 3 * 30 * 24 * 60 * 60 ;
37
48@Injectable ( )
59export class TokenService {
610 constructor ( private readonly jwtService : JwtService ) { }
711
812 generateAccessToken ( payload : any ) : string {
913 return this . jwtService . sign ( payload , {
10- expiresIn : '1h' ,
14+ expiresIn : HOUR ,
1115 } ) ;
1216 }
1317
1418 generateRefreshToken ( payload : any ) : string {
1519 return this . jwtService . sign ( payload , {
16- expiresIn : '28d' ,
20+ expiresIn : THREE_MONTHS ,
1721 } ) ;
1822 }
1923
24+ // 후에 DB 로직 (지금은 refreshToken이 DB로 관리 X)
25+ // 추가될 때를 위해 일단 비동기 선언
2026 async refreshAccessToken ( refreshToken : string ) : Promise < string > {
2127 try {
2228 // refreshToken을 검증한다
@@ -30,4 +36,17 @@ export class TokenService {
3036 throw new Error ( 'Invalid refresh token' ) ;
3137 }
3238 }
39+
40+ clearCookies ( response : Response ) {
41+ response . clearCookie ( 'accessToken' , {
42+ httpOnly : true ,
43+ secure : true ,
44+ sameSite : 'strict' ,
45+ } ) ;
46+ response . clearCookie ( 'refreshToken' , {
47+ httpOnly : true ,
48+ secure : true ,
49+ sameSite : 'strict' ,
50+ } ) ;
51+ }
3352}
You can’t perform that action at this time.
0 commit comments