NodeJS_ BasicNote

장봄·2020년 6월 9일
1
post-thumbnail

이 포스팅은 강의를 듣고 중요한 부분을 간력하게 정리한 것입니다.
자세한 내용은 아래 인프런 강의 링크를 클릭하시면 됩니다.

인프런강의

1. NodeJS & EXPRESS JS설치

  • NodeJS : 구글에서 개발한 고성능 자바스크립트 엔진으로 빌드된 서버 사이드 개발용 소프트웨어 플랫폼

  • EXPRESS : NodeJS 를 이용하여 웹 서비스를 쉽게 개발하게 할 수 있는 프레임워크

$ npm install express --save

2. MongoDB설치

  • MongoDB홈페이지에 회원가입을 하고 Clusters를 생성

  • Mongoose : 문서를 DB에서 조회할 때 자바스크립트 객체로 바꿔주는 역할

  • Mongoose는 npm으로 설치

  • Mongoose의 장점 : 강제 스키마(schema)의 부활, populate, 프로미스와 콜백 사용 가능, 편리한 쿼리 빌더 등

Mongoose(몽구스) 스키마(Schema)

  • 정보의 타입이나 길이 등과 같이 조건을 지정하는 것

  • models는 스키마를 감싸는 것

스키마참고

3. GIT

  • git init : 깃 저장소 생성

  • git log : commit된 파일 확인

SHH(Secure Share)

  • github과 local file이 안전하게 통신하는 방법

  • SHH설치 방법은 공식문서를 보고 따라 진행

SHH참고블로그

SHH생성공식문서

SHH연결공식문서

4. BodyParser & PostMan

  • BodyParser : node.js 모듈(미들웨어). API 요청에서 받은 body 값을 파싱하는 역할을 수행하는 것

  • client가 요청한 정보를 BodyParser로 받아서 서버로 전달한다.(Dependency)

  • PostMan : client가 request를 받아서 실행하고 싶지만 client가 없을 때 이용하는 프로그램

5. NodeMon

  • NodeMon : 서버를 내리고 올리지 않아도 소스를 변경할때 실시간으로 감지해서 자동으로 서버를 재시작하는 툴

npm install nodemon --save-dev

  • script에 명령어를 입력해서 터미널로 시작한다

npm run /script에 지정한 명령어/

6. 비밀설정정보관리(process.env.NODE_ENV)

  • local 환경 : 환경변수(process.env.NODE_ENV)을 development로 설정하고 폴더를 따로만들어서 정보를 입력한다. 만든 폴더는 .gitidnore에 입력해서 github에 push하지 않는다.

  • Deploy(배포) 후 환경 : 환경변수(process.env.NODE_ENV)을 production로 설정하고 HEROKU같은 곳에서 관리된다.

7. Bcrypt로 비밀번호 암호화

  • 데이터베이스에 저장하기 전에 암호화해서 전달하는 것

npm install bcrypt --save

  • Register Route에서 전송하기 전에 암호화를 하도록 설정해야한다.

  • bcrypt에서 salt를 생성하고 salt를 이용해서 암호화를 한다.

8. Bcrypt로 로그인

  • login Route 만들어서 DB에서 요청된 email을 찾는다.(User.findOne()을 이용한다.)

  • email이 있다면 비밀번호를 확인해서 비밀번호가 없으면 error, 비밀번호가 있으면 token을 생성한다.

  • 토큰을 생성하기 위해 jsonwebtoken을 설치한다.

  • 토큰을 만드는 함수를 작성한다.

  • 토큰을 쿠키에 저장하기 위해 cookie-parser를 설치한다.

  • 토큰을 쿠키에 저장한다.

9. Auth

  • 사이트에 들어가서 로그인된 유저만 접속할수있는 페이지가 있다면 체크해서 접속할 수 있게한다.

  • auth route를 만든다.

  • 쿠키에 저장된 토큰을 가져와서 복호화 한 후 서버에서 일치하는 유저를 찾는다.

  • 유저가 있으면 auth미들웨어를 통과해서 정보를 전달한다.

10. logout

  • logout route를 만든다.

  • DB에서 유저를 찾아서 토큰을 지운다.

profile
즐겁게 배우고 꾸준히 블로깅하는 개발자입니다 ;>

0개의 댓글