프로젝트 - 1차 이슈(토큰 인증)

동동·2023년 7월 1일
0
post-thumbnail

장바구니 품목 조회를 위한 API 구현

  • cartRoute.js

  • cartController.js

  • cartService.js

  • cartDao.js

위의 코드처럼 userId만 받아와서 그 userId값에 해당하는 장바구니 id, 품목명, 품목옵션명, 수량, 가격을 조회할 수 있도록 구현을 했는데,

🥲 코드 리뷰 후 내가 짠 로직에서는 웹 사이트 내에서 사용자가 다른 사용자의 userId를 입력해서 다른 사용자의 장바구니를 볼 수도 있다는 사실을 깨달았다..

해결 방법

  • param로 userId를 받는 것(해결 전) -> 토큰 값으로 그 토큰에 해당하는 userId를 받아오기 !

이슈 해결 후 코드

  • cartRoute.js

    여기선 토큰을 가지고 userId값을 가져오면 params로 userId를 가져올 필요가 없기에 엔드포인트를 "/list"로 바꿨습니다 !

  • cartController.js

    token값을 headers에서 가져오고 그 후 토큰이 존재하지 않다면 "INVALID_TOKEN"이라는 에러메시지 출력, 토큰이 존재한다면 그 토큰에 대한 userId값을 받아오도록 로직을 구현하였다 !

  • cartService.js

    위 사진(해결 전 cartService.js)과 같습니다.

  • cartDao.js

    불필요한 부분 삭제

  • 포스트맨 실행 결과 (올바른 토큰 값)

  • 포스트맨 실행 결과 (유효하지 않은 토큰 값)

간단할 줄만 알았던 API였다고 생각을 했는데, 너무 과소평가를 했던 것같다...
간단해보이는 API일 지라도 해결 전의 로직처럼 사용자가 엔드포인트를 바꾼다는 걸 생각하면 상당히 큰 리스크가 생길 수도 있겠다는 걸 깨달았다. 😞

profile
기술 블로그 → donghyeun02.com

0개의 댓글