본문 바로가기
TIL & WIL

[TIL] #127. 240118

by mmm- 2024. 1. 18.

어제 목표 & 오늘 완료한 한 일 

더보기
  • 알고리즘 문제 / SQL 문제
  • Redis 공부
  • 최종 팀 프로젝트
  • 기술면접 대비

 

내일 목표

  • 알고리즘 문제 / SQL 문제
  • Redis 공부
  • 최종 팀 프로젝트
  • 기술면접 대비

 

발생한 문제와 해결 방법

1️⃣. 페이지 이동시 발생하는 auth문제

로그인 이후에 페이지 이동시 인증 문제로 인해 403에러가 발생하는 문제가 계속해서 발생하였다. 이것저것 만져봐도 되지 않았다. 잘 살펴보니 로그인페이지의 responesHeader에는 Authorization이 잘 들어가지만, 마이페이지의 requestHeader에는 Authorization은 존재하지 않고 Cookie에는 Authorization: 토큰값 이런 식으로 존재했다. 마이페이지 파일의 $(document).ready() 에서 맨 처음에 그냥 아무 의미없는 문제열을 console.log를 찍어봤는데도 불구하고 콘솔창에 아무것도 나타나지 않는 것을 확인할 수 있었다. 계속 해봤는데도 불구하고 되지 않아 팀원들과 이야기를 통해 토큰을 헤더에 저장하는 방식에서 쿠키에 저장하는 방식으로 수정을 해보자는 결론이 나와서 쿠키 방식으로 수정해봤다.

 

그런데 쿠키 방식으로 바꿨는데도 불구하고 여전히 같은 문제가 발생했다. 알고보니, 쿠키 방식으로 바꾸는 과정에서 JwtAuthorizationFilter쪽에 추가했던 코드의 일부때문이었다. 해당 코드가 불필요하다고 생각되어 그 부분을 삭제해줬더니 문제가 해결되었다.


2️⃣. PathVariable방식으로 받은 값 프론트에 넘겨주기

다른사람의 프로필을 넘겨줄 때 url에서 userId를 넘겨주는데 컨트롤러 쪽에서 userId를 받으면 model.addAttribute를 통해 프론트 쪽으로 넘겨준다. 그런데 이렇게 넘겨준 값을 프론트 쪽에서 받지 못하는 문제가 발생했었다. 며칠 전 튜터님께 팀원 모두가 질문을 드리러 갔을 때 [[${변수명}]] 이와 같이 사용하면 된다고 말씀하셨던 기억이 어렴풋이 있었다. 그런데 해봐도 userId가 가져와지지 않았다. 알고보니 그 방법은 타임리프 문법이었다. 그런데 우리 팀은 타임리프를 사용하는데 왜 안되지? 라는 의문이 있었다. userId가 가져와지지 않았던 이유는 바로 가져오는 부분을 js파일에서 적어줬기 때문이었다. 그래서 관련 부분만 html파일에서 아래의 태그 사이에 넣어주고, 
<script th:inline="javascript"></script>

공통적으로 사용되는 나머지 코드들은 아래와 같이 가져와줬더니 문제가 해결되었다.

<script src="/js/basic.js"></script>

 

 

느낀점

오늘 정말 많은 일이 있었다. 어제 밤에 이어 새벽, 그리고 오전시간까지 위에서 언급했던 1번 문제를 해결하면서 시간을 보냈다. 진짜 이 부분에 몇 시간을 투자했는지 모르겠다. 그리고 환경변수를 설정하고, 배포한 DB를 연결하는 시간을 가졌다. 그리고 프론트 쪽을 하면서 알게 된 것인데 Spring MVC가 @Controller annotation을 지원한 이후로는 ModelAndView를 지양한다고 한다. 그 이유는 코드의 간결성, 유연성, 가독성과 유지보수성 등이 있다. 

 

'TIL & WIL' 카테고리의 다른 글

[TIL] #129. 240120  (0) 2024.01.20
[TIL] #128. 240119  (0) 2024.01.20
[TIL] #126. 240117  (0) 2024.01.17
[TIL] #125. 240116  (0) 2024.01.17
[TIL] #124. 240115  (0) 2024.01.15