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 |