가장 유명한 웹 서버로 2가지가 존재.
두 웹 서버 모두 “모듈” 이라는 개념을 가지고 있는데, 미들웨어와 아주 유사하다.
요즘은 어디서나 볼 수 있는 보안 연결 방법인 HTTPS를 지원하기 위해서는 https
모듈을 추가하고, 모든 요청과 응답을 기록하고 싶다면 로깅
을 해주는 모듈을 추가하면 됨
Express.js의 미들웨어와 같은 개념 😉
미들웨어는 위에서 아래로 진행한다.
💡 회원가입의 비즈니스 로직 정리하기!
1. email
, nickname
, password
, confirmPassword
를 전달 받음
2. password
와 confirmPassword
가 동일한지 검증
3. email
과 nickname
값이 이미 DB에 존재하는지 검증
4. email
, nickname
, password
를 DB에 저장
5. 회원 가입 성공!
패스워드는 암호를 단방향으로 만들어서 저장해야 해킹의 위험을 대비할 수 있음
만약 클라이언트에게 에러메세지를 상세하게 전달할 경우 해커들에게 현재 서버 상태에 대한 많은 정보들을 전달하게 되어, 보안에 위협적인 요소가 늘어나게 된다.
💡 로그인의 비즈니스 로직 정리하기!
1. email
, password
를 전달 받음
2. email
에 해당하는 사용자가 DB에 존재하는지 검증
3. 사용자가 존재하지 않거나 사용자와 입력받은 password
가 일치하는지 검증
4. JWT 생성 후 Cookie 및 Body로 클라이언트에게 전달
5. 로그인 성공!
왜 경로가 /auth
인가요?
Authenticate를 줄인 단어인데, 로그인 한다는 행위 자체를 "사용자가 자신의 정보를 인증한다" 라고 보기 때문에 일반적으로 로그인에 자주 사용되는 경로 중 하나!
git show 와 git log 를 보면 user.email에 대한 정보가 있다. 어제 노트북으로 작업을 하며 user.email 과 user.name 을 구글로 반영하게 되어 네이버 이메일로 반영되어 있던 깃허브에 잔디가 심어지지 않았던 거다. 이후 처리는
$ git config --global user.name "Your Name"
$ git config --global user.email you@example.com
명령어를 통해 처리 했지만, 기존에 커밋했던 내역을 바꾸기엔 쉽지 않았다. 만일 바꾸려면 명령어를 통한 편집기 내역에서 바꾸는 게 맞아 보인다. 깃허브 환경에 대해서도 생각할 수 있었던 경험이다.
미들웨어가 할 수 있는 일
: 유효성 검사. validation
모든 요청에 대해 동일한 처리를 할 때는 미들웨어를 쓴다.
공통 로직은 함수로 만든다.
즉, 함수로 바꿔 놓고 함수를 또 미들웨어 이용하면 보기도 좋고 편하다.
요청 → 처리로직 → 응답
: 처리로직은 3layerd 아키텍쳐
요청과 처리로직 사이에 인증이 있다.
express.json이란
요청 - 헤더 바디
body → Json 은 문자열
그 문자열을 객체로 바꾸는게 express.json이다
미들웨어는 실제로 처리하기 전의 중간 로직
URL 끝에 ?를 적는걸 쿼리스트링이라고 한다.