-node.js를 좀 더 쉽게 사용할 수 있게 도와주는 express.js
1.node.js 다운받기
2.터미널에 node -v해서 버전 확인
3.
텍스트 에디터: 비쥬얼 스튜디오코드
index.js파일을 만들고 이것이 백엔드의 시작!
모델은 스키마를 감싸주는 역할을 하고, 스키마는 하나하나의 정보를 지정해준다.
깃: 분산버전관리 시스템
cf) 깃이 다운받아졌는지 아닌지를 알고 싶다면? 터미널에가서 git --version을 쳐보자
이하 생략
간단하게 클라이언트와 서버가 통신하는 방법을 보자
클라이언트가 서버에게 데이터를 전송해줄때 body-parser라는 dependency 를 통해 받을 수 있다.
- npm install nodemon --save-dev
-dev안붙여도되는데 dev를 붙인 이유 : development 모드 (local에서만 사용하겠다)
(cf. production 모드 (배포))
-소스 안에 있는 비밀정보를 보호하는것을 할것이다.
우리는 두가지 환경에서 개발할 수 있는데 : 1) local환경에서 2) 헤로쿠나 클라우드 서비스 등을 통해 deploy(배포)한 후의 환경에서...
따라서 두 가지 경우 각각 생각해야함
서버 연결 확인한 후, .gitignore에 dev.js파일을 넣어준다.
저번시간에 포스트맨을 이용해 포스트를 했는데 이걸 데이터베이스에 가서 확인을 해보면
비밀번호가 딱 보이니까 보안성이 너무 약해. 그래서 포스트된 패스워드를 -> 암호화를 한 후 -> 데이터베이스에 저장을 한다.
암호화는 bycrypt로 할 것임: npm install bcrypt --save
암호화히기 위해서는 몽구스의 기능을 이용한다.
- 솔트모듈가져오고 해시하기
참고로 myPlaintextPassword은 암호화안된 패스워드를 말한다.
https://www.npmjs.com/package/bcrypt
비밀번호 암호화 성공!
- login route 만들기
1) 요청된 이메일을 데이터베이스에서 있는지 찾는다.
2) 요청된 이메일이 데이터베이스에 있다면 비밀번호가 맞는 비밀번호인지 확인
3) 비밀번호까지 맞다면 토큰을 생성한다.
잠깐! 콜백함수 사용하는법 좀 잊은것같아서.. 콜백함수코드 살짝 추가해봐
const getDataFromFile = function (filePath, callback) { // TODO: fs.readFile을 이용해 작성합니다 // If options is a string, then it specifies the encoding: fs.readFile(filePath, 'utf-8', (err, data) => { if(err){ callback(err,null) }else{ callback(null,data) } }); };
토큰생성 라이브러리 다운
- npm install jsonwebtoken --save
jwt npm 사이트
대표적으로 jwt생성 방법
쿠키, 로컬스토리지 어디에있는지