This repository has been archived by the owner on Jul 29, 2024. It is now read-only.
JWT RefreshToken 핸들러에 관하여 #519
HubCreator
started this conversation in
기능 제안
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
문제 상황
문제 상황은 다음과 같았습니다.
AuthController
에서“/auth/token/refresh”
경로로 들어오는 곳에서, 핸들러의 매개변수로@AuthenticationPrincipal
를 주었기 때문에 ArgumentResolver가 작동했습니다.TokenArgumentResolver
에서jwtTokenProvider.getPayload(token)
메서드가 실행되는데,getPayload()
내부에서getClaims()
를 가져올 때 유효기간이 만료되면ExpiredJwtException
이 발생하더라구요. 이를 적절하게 잡아주지 않아서, 500 에러가 발생했습니다.하지만 잘 생각해보면 애초에
AccessToken
이 만료되어서,RefreshToken
을 쿠키에 넣어 해당 URL에 요청하는 것인데,AccessToken
에 대해 앞단에서 처리를 해주는 것이 필요한가 생각이 들었습니다. 또한AccessToken
자체를 받을 필요가 있는가 생각이 들었습니다.따라서 현재는 쿠키에 있는
RefreshToken
값만 핸들러에서 추출하도록 수정하였습니다.고려해볼 것
현재
“/auth/token/refresh”
에 대해서만RefreshTokenAuthInterceptor
가 적용되고 있습니다.이 인터셉터에서는 리프레시 토큰이 유효한지 검증하고 있습니다. 대략적인 로직은..
그런데, 이런 검증을 인터셉터에서 하는 것이 좋을까? 라는 생각이 불현듯 들었습니다. 왜냐하면 인터셉터를 적용하는 path가 현재로서는 단 하나뿐이기 때문입니다.
만약 여러 컨트롤러를 거치기 전에 해당 로직이 필요하다면 인터셉터를 사용하여 앞단에서 처리하면 효율적이겠지만, 현재 하나의 핸들러만 적용되고 있기에 해당 로직을 인터셉터가 아닌 서비스 레이어로 가지고 들어가도 되지 않을까 생각했습니다.
여러분의 의견은 어떠신가요?!
Beta Was this translation helpful? Give feedback.
All reactions