오늘 배운 것
1. 정규표현식
정규표현식을 배웠다. 이 부분은 별도의 메모가 필요할 것 같아서 따로 포스팅했다.
https://guuumi.tistory.com/102
2. 글로벌 스테이트 / 로그인 인증(Authentication) 및 인가(Authorization)
로그인 인증 과정이 어떤 방식으로 발전해왔는지와 그러한 과정을 거쳐 정리된 현대적 로그인 인증 방법에 대해 배웠다. (샤딩을 이용하는 방식 / JWT를 이용하는 방식) 그리고 그 중에서도 JWT를 이용한 로그인 인증 및 인가 방식을 실습했다. 로그인 관련 데이터 객체를 암호화하는 방식은 다음과 같다.
- email/pw를 사용해서 백엔드 서버에 로그인 요청을 보낸다.
- 해당 정보를 db에서 찾는다.
- User 테이블에 존재하는 정보라는 사실이 확인되면, 백엔드 서버가 해당 user 로그인 정보를 객체로 만든다.
- 이름, id, 로그인 만료시간 등등 포함
- 해당 객체를 암호화해서 토큰으로 만든다.
- 토큰을 브라우저로 보낸다. 브라우저는 해당 토큰을 저장해둔다.
- 로그인이 필요한 API 요청시 토큰을 함께 백엔드로 보낸다.
- 백엔드는 해당 토큰을 DB에서 다시 찾지 않고, 백엔드 내에서 복호화한다.
- 아직 유효한 객체일 경우 (로그인 만료 시간으로 판별) 로그인을 승인하고 데이터를 처리한다.
- 이러한 방식의 로그인 프로세스에서 사용되는 토큰을 JWT 토큰이라고 부른다.
- (Json Web Token) / JSON : JavaScript Object Notation
이런 식으로 로그인해서 accessToken을 받아오는 것을 '인증' 이라고 한다.
이 토큰을 가지고 토큰이 필요한 API를 요청할 권한을 얻는 과정을 '인가'라고 한다.
인증과 인가를 통해 유저 로그인 API 요청을 보내고 브라우저에 유저 정보가 반영되게 만들어봤다.
조금 어렵긴 하지만, 로그인 프로세스를 익히면 더 많은 기능을 구현할 수 있다고 생각하니까 재밌다. 🎃
주의! JWT는 복호화가 쉽기 때문에 핵심적인 정보는 담아서 보내면 안된다.
복호화 사이트 : https://jwt.io/
3. 알고리즘 테스트 보고 내 습관 파악함
내 코드가 지저분해보여서 그 원인이 대체 무엇인지 고민중이었는데, 지난 주 알고리즘 테스트를 보고 코드를 복기하다가 원인을 깨달았다. 나는 조건 설정과 각 분기별 실행 구문을 몹시 퍼트려놓는다. 의식의 흐름으로 급하게 코딩할수록 이게 더 심해진다. 마침 로그인 인증과 결제 시스템 학습을 위한 포트폴리오 프로젝트를 새로 만들었으니, 아래 사항들에 신경쓰면서 코딩해봐야겠다.
1. 조건 설정은 문서 상단에 모아서 처리하고, 각 조건 분기별 변수를 지정해줘서 알아보기 쉽게 할 것.
2. 정리된 조건 변수명만 보고서도 어떠한 분기인지 직관적으로 알 수 있도록 이름 지을 것.
3. 각 분기별 실행구문도 최대한 모아서 보기 쉽도록 작성할 것.
앞으로 할 것
- 로그인 인증 연장하는 방법 배우기
- accessToken을 활용해서 권한분기 나누는 방법 배우기
- 중고마켓 포트폴리오 컨셉 확정하고 UI 정리하기
(현재 '29cm' vs '오늘의 집' 중에서 고민하고있다.. 취업 포트폴리오로 쓰려면 역시 오늘의 집 쪽이 좋을까 싶기도 하고.)
'Journal > Today I Learned' 카테고리의 다른 글
TIL - 2022.02.16 수요일 (0) | 2022.02.16 |
---|---|
TIL - 2022.02.15 화요일 (0) | 2022.02.15 |
TIL - 2022.02.10 목요일 (0) | 2022.02.10 |
TIL - 2022.02.09 수요일 (0) | 2022.02.09 |
TIL - 2022.02.08 화요일 (0) | 2022.02.08 |