어제 썼던 대로 생각한 걸 구현해서 가져가보았다. RequestDispatcher 객체를 만들어서 forward 함수로 가져가는 거였는데,
RequestDispatcher reqDp = request.getRequestDispatcher("/api/token/refresh");
reqDp.forward(request, response);
이러면 method 종류에 따라서 또 다르게 해야 하고... 내가 생각해도 너무 복잡하고 어려웠다. 모든 걸 갈아엎고 싶어졌으나... 튜터님에 조언에 따라 프론트쪽을 아주 살짝만 바꾸니 해결되는 문제였다. 애초에 인가에서 에러 발생하면 403을 띄웠어서 403의 경우 기존 요청을 인자에 넣어 refresh함수를 부르고, 재실행하면 되는 거였다.
error: function (output, status, response) {
if (status === 403) {
refreshToken($.ajax(this))
}
}
그리고 async: false 옵션을 넣어줘서 동기화 시켜줬다.
이미 비슷하게 구현해 놓고도 써먹질 못하고 있었는데, 애초에 인가 필터에서 너무 많은 것을 하려고 했던 것 같다. 튜터님이 너무 연결지어서 생각하지 말고 한 번에 하나씩만 하라는 조언을 해주셨는데 난 진짜 한 번에 해버리려는 경향이 큰 것 같다. 마음 깊이 새겨야겠다...
하지만 삽질의 과정에서도 항상 얻는 것은 있다! 생각한 대로 구현하는 과정에서 예외 처리는 필수였기에 이리 저리 건드려놨는데 조금만 손봐서 service 단에는 그대로 적용하면 될 것 같다. 얼른 마무리하고 필터 예외는 어떻게 다듬을지 고민하고 네이밍도 다시 보고 dto도 부족한 곳 없는지 확인하고... 빠릿빠릿하게 해보자.
✅ 응답 DTO
✅ 프로필 업데이트 오류 수정
⬜ 리팩토링
⬜ 버그 해결
✅ 예외 처리