Journal/Today I Learned

TIL - 2022.02.14 월요일

쭈꾸미 2022. 2. 14. 21:21

오늘 배운 것


1. 정규표현식

정규표현식을 배웠다. 이 부분은 별도의 메모가 필요할 것 같아서 따로 포스팅했다.

https://guuumi.tistory.com/102

 

[Javascript] 정규표현식 기초 - 정규표현식 패턴

정규표현식이란? 정규표현식이란 특정 패턴의 문자열을 찾기 위한 표현 방식으로, 잘 이용하면 Javascript를 이용한 검증 과정을 보다 간단하게 만들 수 있다. 가장 간단하게 접근할 수 있는 test 메

guuumi.tistory.com

 

2. 글로벌 스테이트 / 로그인 인증(Authentication) 및 인가(Authorization)

로그인 인증 과정이 어떤 방식으로 발전해왔는지와 그러한 과정을 거쳐 정리된 현대적 로그인 인증 방법에 대해 배웠다. (샤딩을 이용하는 방식 / JWT를 이용하는 방식) 그리고 그 중에서도 JWT를 이용한 로그인 인증 및 인가 방식을 실습했다. 로그인 관련 데이터 객체를 암호화하는 방식은 다음과 같다.

  1.  email/pw를 사용해서 백엔드 서버에 로그인 요청을 보낸다.
  2. 해당 정보를 db에서 찾는다.
  3. User 테이블에 존재하는 정보라는 사실이 확인되면, 백엔드 서버가 해당 user 로그인 정보를 객체로 만든다.
    • 이름, id, 로그인 만료시간 등등 포함
  4. 해당 객체를 암호화해서 토큰으로 만든다.
  5. 토큰을 브라우저로 보낸다. 브라우저는 해당 토큰을 저장해둔다.
  6. 로그인이 필요한 API 요청시 토큰을 함께 백엔드로 보낸다.
  7. 백엔드는 해당 토큰을 DB에서 다시 찾지 않고, 백엔드 내에서 복호화한다.
  8. 아직 유효한 객체일 경우 (로그인 만료 시간으로 판별) 로그인을 승인하고 데이터를 처리한다.
  9. 이러한 방식의 로그인 프로세스에서 사용되는 토큰을 JWT 토큰이라고 부른다.
    • (Json Web Token) / JSON : JavaScript Object Notation

 

이런 식으로 로그인해서 accessToken을 받아오는 것을 '인증' 이라고 한다.

이 토큰을 가지고 토큰이 필요한 API를 요청할 권한을 얻는 과정을 '인가'라고 한다.

인증과 인가를 통해 유저 로그인 API 요청을 보내고 브라우저에 유저 정보가 반영되게 만들어봤다.

조금 어렵긴 하지만, 로그인 프로세스를 익히면 더 많은 기능을 구현할 수 있다고 생각하니까 재밌다. 🎃 

주의! JWT는 복호화가 쉽기 때문에 핵심적인 정보는 담아서 보내면 안된다.

복호화 사이트 : https://jwt.io/

 

JWT.IO

JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.

jwt.io

 

3. 알고리즘 테스트 보고 내 습관 파악함

내 코드가 지저분해보여서 그 원인이 대체 무엇인지 고민중이었는데, 지난 주 알고리즘 테스트를 보고 코드를 복기하다가 원인을 깨달았다. 나는 조건 설정과 각 분기별 실행 구문을 몹시 퍼트려놓는다. 의식의 흐름으로 급하게 코딩할수록 이게 더 심해진다. 마침 로그인 인증과 결제 시스템 학습을 위한 포트폴리오 프로젝트를 새로 만들었으니, 아래 사항들에 신경쓰면서 코딩해봐야겠다.

1. 조건 설정은 문서 상단에 모아서 처리하고, 각 조건 분기별 변수를 지정해줘서 알아보기 쉽게 할 것.
2. 정리된 조건 변수명만 보고서도 어떠한 분기인지 직관적으로 알 수 있도록 이름 지을 것.
3. 각 분기별 실행구문도 최대한 모아서 보기 쉽도록 작성할 것.

 

앞으로 할 것


- 로그인 인증 연장하는 방법 배우기

- accessToken을 활용해서 권한분기 나누는 방법 배우기

- 중고마켓 포트폴리오 컨셉 확정하고 UI 정리하기

(현재 '29cm' vs '오늘의 집' 중에서 고민하고있다.. 취업 포트폴리오로 쓰려면 역시 오늘의 집 쪽이 좋을까 싶기도 하고.)