TIL 2023-04-26

오성인·2023년 4월 26일
0

TIL

목록 보기
17/66
post-thumbnail
post-custom-banner

1. 오늘 겪은 문제

1. refresh token 구현
2. transcation

2. 해본 시도

  1. refresh token을 직접 구현해 봤는데, 처음에는 redis를 사용해 볼 생각 이었으나, 프로젝트의 규모가 작기 때문에 fs, path 모듈을 통해 json파일에 refresh토큰을 저장, 확인, 삭제하기로 하였다.
  2. sequelize에서 트렌젝션 처리는 managed 방식과 unmanaged방식이 있는데, 둘 모두 시도 해봤다. unmanaged방식의 경우 catch 구문에서 rollback 시점을 명시할 수 있다는 점이 특징적이었고, 반대로 managed는 오류가 발생하면 바로 rollback을 실행하는 것이 특징적이었다.

3. 해결 방법

  1. fs의 readSync, writeSync 함수 를 통해서 저장 및 수정, 삭제가 가능했고, 해당 과정에서 stringify나 parse 를 통해 변환해 주어야 했다. refreshtoken 방식은 로그인시 access와 refresh 두 토큰을 발급하고, access가 만료되면 refresh를 확인하여 재발급하고, refresh가 만료되면 저장된 refreshtoken을 삭제하고 재 로그인을 한다.
  2. model.index의 sequelize와 sequelize모듈의 Transaction을 통해서 await sequelize.transaction( async (t) => {})의 구문을 통해서 managed 방식을 사용할 수 있었고, unmanaged는 transaction 객체를 변수에 담아 해당 위치 바다 transaction 옵션을 추가하고 해당 객체의 commit, rollback 매서드를 통해 트랜잭션을 수행하였다.

4. 새롭게 알게 된 점

  • Joi를 통한 발리데이션도 진행 중에 있는데, Joi 스크립트를 만들고 적용시키는게 꽤나 새롭다. 또 에러를 custom할 수 있다는 부분도 유용하게 다가왔다. 물론 러닝커브가 약간 존재하지만 금방 익숙해져 보려 한다.
  • fs와 path 모듈을 통해 파일을 직접 읽고, 쓰고, 수정하는 방식을 알게되었다. 알아두면 꽤나 유용할 것 같다.

5. 오늘 더 효율적으로 일할 수 있었을 것 같은 방법은?

  • 내가 모르는 지식을 활용하려고 시도할 때, 늘 망설이지만 시도하다 보면 큰 일이 아니었다는 것을 매번 경험함에도 계속해서 모르는 것들을 활용할 때 마음이 움직이기를 기다리기도 하는 것 같다. 모르는 지식을 활용하려 시도할 때, 무턱대고 일단 코드를 쓰자. 일단은 써보자.
profile
기여하는 개발자
post-custom-banner

0개의 댓글