2023-07-14 TIL (Node.js 숙련)

오준석·2023년 7월 17일
0

TIL (Today I Learned)

목록 보기
44/105

TIL

<Node.js 숙련주차>

가장 유명한 웹 서버로 2가지가 존재.

  • Apache
  • Nginx

두 웹 서버 모두 “모듈” 이라는 개념을 가지고 있는데, 미들웨어와 아주 유사하다.

요즘은 어디서나 볼 수 있는 보안 연결 방법인 HTTPS를 지원하기 위해서는 https 모듈을 추가하고, 모든 요청과 응답을 기록하고 싶다면 로깅을 해주는 모듈을 추가하면 됨

Express.js의 미들웨어와 같은 개념 😉

미들웨어는 위에서 아래로 진행한다.

💡 회원가입의 비즈니스 로직 정리하기!
1. email, nickname, password, confirmPassword를 전달 받음
2. passwordconfirmPassword가 동일한지 검증
3. emailnickname값이 이미 DB에 존재하는지 검증
4. email, nickname, password를 DB에 저장
5. 회원 가입 성공!

패스워드는 암호를 단방향으로 만들어서 저장해야 해킹의 위험을 대비할 수 있음

만약 클라이언트에게 에러메세지를 상세하게 전달할 경우 해커들에게 현재 서버 상태에 대한 많은 정보들을 전달하게 되어, 보안에 위협적인 요소가 늘어나게 된다.

💡 로그인의 비즈니스 로직 정리하기!
1. email, password를 전달 받음
2. email에 해당하는 사용자가 DB에 존재하는지 검증
3. 사용자가 존재하지 않거나 사용자와 입력받은 password가 일치하는지 검증
4. JWT 생성 후 CookieBody로 클라이언트에게 전달
5. 로그인 성공!

왜 경로가 /auth 인가요?
Authenticate를 줄인 단어인데, 로그인 한다는 행위 자체를 "사용자가 자신의 정보를 인증한다" 라고 보기 때문에 일반적으로 로그인에 자주 사용되는 경로 중 하나!

  • 6) ✅ 왜 POST 메서드로 구현하나요?
    1. 보안 관점: GET 메서드는 데이터를 URL에 표현해야 하기 때문에 보안에 취약
    2. REST API 관점: 인증 정보를 "생성"해서 받아온다고 보면 POST 메서드가 적합

<데스크탑과 노트북 user.email이 달라 생긴 커밋 반영 이슈>

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

명령어를 통해 처리 했지만, 기존에 커밋했던 내역을 바꾸기엔 쉽지 않았다. 만일 바꾸려면 명령어를 통한 편집기 내역에서 바꾸는 게 맞아 보인다. 깃허브 환경에 대해서도 생각할 수 있었던 경험이다.

<정예반 8회차 강의>

미들웨어가 할 수 있는 일
: 유효성 검사. validation

모든 요청에 대해 동일한 처리를 할 때는 미들웨어를 쓴다.
공통 로직은 함수로 만든다.
즉, 함수로 바꿔 놓고 함수를 또 미들웨어 이용하면 보기도 좋고 편하다.

요청 → 처리로직 → 응답
: 처리로직은 3layerd 아키텍쳐
요청과 처리로직 사이에 인증이 있다.

express.json이란
요청 - 헤더 바디
body → Json 은 문자열

그 문자열을 객체로 바꾸는게 express.json이다

미들웨어는 실제로 처리하기 전의 중간 로직

URL 끝에 ?를 적는걸 쿼리스트링이라고 한다.

profile
개발자를 목표로 열심히 하려고 합니다.

0개의 댓글