❄️body에 받아서 넣어주던 user_id를 jwt token cookie로 받아
header Authorization으로 넣어서 통신하기❗
토큰 발행으로 토큰을 받아서 받은 토큰을 Authorization의 value값으로 넣어주면
verify의 값이 찍히는 것을 볼 수 있다❗
❄️좋아요 추가, 삭제 jwt 받아서 하기
추가
삭제
likeController.js
cartController.js
💢우리가 생각해봐야 할 것
1. TokenExpiredError: jwt expired
유효기간이 지나서 나오는 에러
아무 처리를 하지 않으면 500에러가 나오지만 (서버가 꺼지지는 않음)
우리는 클라이언트단에서 에러가 아닌 메세지를 띄워줘야한다.
예외처리 => res. '로그인(인증) 세션이 만료되었습니다. 다시 로그인 하세요.'
2. ensureAuthorization() - 몇몇의 API 파일에서 사용해야하는
✨예외처리
JWT
1. TokenExpiredError
: 유효기간이 지난 토큰 = 만료된 토큰
2. JsonWebTokenError
: 문제가 있는 토큰
✨try...catch
- 개발자가 예상하지 못 한 수많은 에러를 처리하는 문법
- try 구문의 코드를 실행하다가 에러가 발생하면, try 코드를 멈추고 catch로 에러를 잡아줌
- try 구문에서 어떤 에러가 발생해도, 우리가 if문 분기처리해주던 내용들이 catch로 에러처리를 함
✨에러객체
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Error
✨throw 연산자
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/throw
🔥jwt 에러던지기❗
지금과 같은 코드로 try...catch를 해주었더니
expired된 에러 뿐만이 아니라 다음 코드 실행되면서 오류를 또 내고있다.
우리는 expired 에러에서 재인증을 받으라는 메세지를 띄워줄 예정이므로
catch에서 response를 return 해준다.
하지만 에러는 여전히 다음코드로 넘어가서 다른 오류를 내고있다...
해결해보자❗
❄️내가 해결한 방법
ensureAuthorization 함수 내에서 로그인 세션만료 response를 보내주고,
http method 함수 내에서는 id를 받아오지 못하면 그냥 early return을 시켜주었다.
❄️강사님의 방법
ensureAuthorization 함수 내에서는 err를 리턴해주고,
실제 실행되는 함수 내에서
instanceof를 사용해서 인스턴스인지 확인해주면서 로그인 세션만료 reponse를 보내줬다.