본문 바로가기

verdantjuly/Today I Learned

TIL 20230710

728x90

 

Event

2:30 산삼 팀 회의

생활 계획표

 

AM 6:00 체조, 아침식사, 산책, 샤워, 설거지, 세탁

AM 7:00 입실, 알고리즘 공부

AM 9:00 본 공부 시작

PM 1:00 ~ 2:00 점심 식사

PM 6:00 ~ 7:00 저녁식사

PM 7:00 TIL, WIL 제출

PM 9:00 퇴실 (카톡 확인)

PM 11:00 취침

 

이번 주 목표

Lv.5 과제 완성 (리프레시 토큰 로그인 계정 2개일 경우 연구)

오늘 목표

프로그래머스 3문제

알고리즘 2-6까지

TIL 작성

TIL 리뷰

오늘 한 것

TIL 작성

TIL 리뷰

알고리즘 2-4까지 수강함

프로그래머스 3문제

369게임 : https://verdantjuly.tistory.com/295

인덱스 바꾸기 : https://verdantjuly.tistory.com/296

최댓값 만들기(2) : https://verdantjuly.tistory.com/297

Lv.5 과제 리프레시 토큰 로그인 계정 2개일 경우 연구 완료

0. 로그인 계정이 2개일 때 쿠키의 토큰 처리

문제 

기존의 코드로는 계정이 2개인 경우 쿠키의 토큰 값이 자동으로 삭제되거나 하지 않아 로그인 자체가 안 된다.

시도

로직을 처음부터 차근히 생각하고 적어 나감

Accesstoken 만으로 authmiddleware 토큰 검사

로그인 API 실행 시
 DB에 저장된 refreshtoken과 쿠키에 가진 refresh 토큰이 일치하고
 verify 가능하면 access token 발급

이외의 경우 > 정상적인 접근 > refreshtoken access token 발급

비정상적인 접근 
refreshtoken ! == DB
refreshtoken !verify
> clearCookie
> 로그인 실패 
> console.log (`비정상적인 접근 userId:${userId}`);

해결

이외의 경우이나 정상적인 접근에 해당하며, 쿠키의 refresh 토큰이 존재하며 인증이 가능하나 값이 다르다는 것은 

즉, 다른 계정의 토큰이라는 뜻이므로 이 계정의 토큰을 재발행하여 쿠키에 담아 준다. 서버에도 업데이트 시킨다.

그리고 access 토큰 역시 같이 발급하여 로그인을 허가한다.

알게 된 점

jwt의 인증의 의미를 다시 새겨야겠다. 


1. refreshtoken 이란

문제

refreshtoken을 사용자를 인증하는 방법에 accesstoken과 함께 이중으로 사용함

시도

뭔가 이상한 것 같아 튜터님께 질문

해결

강의 자료를 다시 튜터님과 찬찬히 살펴본 결과

refreshtoken 은 accesstoken을 발급할 때만 사용함.

 

그래서 바뀐 나의 로직!!

 

Accesstoken 만으로 authmiddleware 토큰 검사

로그인 API 실행 시
 DB에 저장된 refreshtoken과 쿠키에 가진 refresh 토큰이 일치하고
 verify 가능하면 access token 발급

이외의 경우 > 정상적인 접근 > refreshtoken access token 발급

비정상적인 접근 
refreshtoken ! == DB
refreshtoken !verify
> clearCookie
> 로그인 실패 
> console.log (`비정상적인 접근 userId:${userId}`);

알게된 것

refreshtoken 은 accesstoken을 발급할 때만 사용함.

 

지금은 영속성이 있는 DB에 저장하지만 나중에는 token을 휘발성이 있는 저장소에 저장하는 것이 좋음.
in memory DB (Redis 등) /Storage , 서버 세션


정리 

refreshtoken 은 accesstoken을 발급할 때만 사용함.

 

Accesstoken 만으로 authmiddleware 토큰 검사

로그인 API 실행 시
 DB에 저장된 refreshtoken과 쿠키에 가진 refresh 토큰이 일치하고
 verify 가능하면 access token 발급

이외의 경우 > 정상적인 접근 > refreshtoken access token 발급

비정상적인 접근 
refreshtoken ! == DB
refreshtoken !verify
> clearCookie
> 로그인 실패 
> console.log (`비정상적인 접근 userId:${userId}`);

 

체크리스트

[ O ] 예쁜 말로 협업하였는가?

[ O ] 12시간 동안 몰입하였는가?

[ O ] 코딩 시 복사 + 붙여넣기를 하지 않았는가?

[ O ] 친절한 개발자였는가?

[ O ] 오늘을 평가하였을 때 주니어 개발자가 될 수 있겠는가?

 

KPT

Keep

루틴을 지켜나가려고 밀린 것들을 여유 있는 날 해결하는 책임감 있는 모습 칭찬한다!

Problem

변수 이름이 너무 제멋대로이다.

Try

시간이 없더라도 변수 이름은 잘 정하고 넘어가자.

스무살 버릇 여든까지 간다!!!!!

원래 안 하는 사람은 어느 상황이 닥쳐도 안 한다!!!!

소감

열심히 하는 모습이 좋다!!!

다만 조금 더 깔끔한 클린 코드를 작성할 수 있으면 좋겠다.

지금은 베껴 적는 수준이지만 수료까지 클래스를 열심히 배워서 객체 지향 설계까지 도전해 보자~

 

 

 

 

 

 

'verdantjuly > Today I Learned' 카테고리의 다른 글

TIL 20230712  (2) 2023.07.12
TIL 20230711  (0) 2023.07.11
TIL 20230709  (0) 2023.07.09
TIL 20230708  (0) 2023.07.08
TIL 20230707  (0) 2023.07.07