TIL

내일배움캠프 6주차 수요일 TIL

news0516 2024. 12. 4. 21:33

각자의 작업을 Dev 에 합치는 작업을 진행하였다.
- 내가 오늘 완성한 기능

  • 인증 미들웨어 로그인 성공시 엑세스 토큰(5m, 사용자에게 전달), 리프레시 토큰(7d, db에 저장) 생성, 이메일 정보 헤더에 저장해 전달 사용자의 요청과 함께 서버로 다시 전달된 엑세스 토큰 검증
  1. 엑세스 토큰이 유효할 때

jwt.verify를 통해 엑세스 토큰의 유효성 검사 유효한 경우 accountid를 조건으로, prisma.findFirst()를 통해 사용자 정보 조회 계정정보를 req.account에 저장하여 이후 API에서 사용할 수 있다

  1. 엑세스 토큰이 만료되었을 때

만료된 토큰이 아닌 이메일 정보 헤더의 이메일을 통해 accountid 도출 도출한 accountid로 리프레시 토큰 확인 2-1. 리프레시 토큰 유효 검증 후 새로운 엑세스 토큰 생성 계정정보를 req.account에 저장하여 이후 API에서 사용하고, res.setHeader를 통해 새로운 엑세스 토큰을 전달한다. (사용자 입장에서는 로그인 없이 요청-전달 과정이 진행된다) 2-2. 리프레시 토큰 만료 사용자가 다시 로그인하여 리프레시 토큰을 새로 생성해야한다.

  • 회원가입, 로그인 라우터 로그인에 성공하여 새로운 리프레시 토큰이 생성되었을때는, 기존 리프레시 토큰이 db에서 삭제된다. (db에서 accountid당 리프레시 토큰은 1개만 존재)
  • 매니저 생성, 삭제 라우터 매니저는 계정당 1개만 생성 가능 본인 소유의 매니저만 삭제할 수 있도록 로그인한 사용자 accountid - 파라미터로 전달받은 managerid에 연계된 accountid 비교


추가적으로 
닉네임 형식 검증 나이, 성별 유효성 검사, 어드민 계정여부를 토큰 생성시 함께 전달, 매니저 랭킹 조회 시 전적 표시
등의 기능을 작업했다.

합치는데 성공한 작업을 토대로 작업을 이어가려했다.
이때 개인 db에서 팀 프로젝트 db로 옮기는 과정에서 이전 db의 스키마 모델이 빠지지 않아 고생하다 팀원 조언을 통해 nodemodule을 재설치해서 간단히 해결하였다.  하나 배웠다.

이후 테스트를 통해 다른 팀원의 api에서도 인증 미들웨어가 잘 기능하는 것을 확인했다.

도전 기능도 다른 api가 완성되었을때 데이터를 전달받는데 그칠 것 같아 프론트엔드쪽을 조금 알아보기로 했다. 잘될것 같지는 않으나....