MongoDB와 Node express 연결하기
·
Backend
이것도 미래의 나에게 시간 아끼라고 쓰는 글.. (이전글: React와 Node.js 연동하기) 글의 목차 MongoDB cluster 만들기 Node에 라이브러리 설치 MongoDB와 Node 연결 (+body-paresr 설정) Schema 및 Model 생성 테스트 DB에 데이터 저장 DB에서 데이터 조회 1. MongoDB cluster 만들기 1) MongoDB에 가입 후 database 만들기 (아래 사진의 Build a Database 클릭) 2) 무료 버전인 Shared로 Create 3) Cluster 설정(딱히 뭐 건드리지 않아도 됨) 후 만들기 4) Network Access 설정 (IP주소를 접근 추가해줘야 DB가 돌아가므로 반드시 해야 함!!!) 2. Node에 라이브러리 설치 n..
React와 Node.js 연동하기
·
Backend
프론트엔드랑 백엔드 연결할 때마다 정신이가 없어진다.. 이건 미래의 내가 또 정신을 잃지 않게 하기 위해 정리하는 글... 글의 목차 React 프로젝트 만들기 (create-react-app) server 파일 만들기 (+route 파일 만들기) Proxy 서버 설정 React 에서 Server 로 데이터 요청하기 실행하여 확인 1. React 프로젝트 만들기 npm create-react-app project_name (이 글에서는 CRA말고 다른 방식으로 만든 프로젝트를 서버와 연결하는 것은 다루지 않는다.) 2. Server 파일 만들기 (+Route 파일 만들기) 우선 axios, express를 설치한다. npm install axios// axios 말고 fetch를 쓴다면 생략 npm in..
[Node.js login] 04 Logout 기능 만들기
·
Backend
이 글에서는 user가 로그아웃을 시도할 때 로그아웃시키는 기능을 만드는 방법을 알아본다. (이전 글과 이어짐) 일단 로그아웃이 되려면 로그인이 되어 있는 상태여야 한다. 이전 글들에서, 로그인한 user가 뭘 하려고 하면 그 때마다 인증을 거친다고 했다. 만약 인증이 안되면? 로그인이 풀려버린다. 그러니까 로그아웃은, 로그아웃을 시도한 user를 DB에서 찾고 해당 user의 token을 삭제하면 끝이다. 1. Logout 코드 짜기 index.js /* logout */ // 로그아웃하려면 일단 로그인이 된 상태이므로 auth 미들웨어 함수를 추가함 app.get('/logout', auth, (req, res) => { // DB에서 로그아웃을 시도하는 user의 token을 삭제하면 // 인증이 ..
[Node.js Login] 03 Auth 기능 만들기
·
Backend
이 글에서는 user가 로그인한 후 생성된 token을 가지고 user를 인증(authentication)하는 기능을 만든다. (이전 글과 이어짐) 1. Token을 이용한 Auth 과정 이전 글에서 token이 어떻게 쓰이는지 설명했었는데, 다시 상기시켜보자. client의 token은 client쪽과 server쪽에 동일하게 저장되어 있고, token은 client가 server에게 새로운 요청을 보낼 때 'it's me' 의 용도로 함께 보내진다. server는 그 token을 받아서 decode하고, decode한 결과 즉, user의 id를 DB에 검색한다. server는 id가 일치하는 user의 정보에 있는 token과 client에게 받은 token을 비교한다. 둘이 서로 일치하면 인증에 ..
[Node.js Login] 02 로그인 정보와 DB 데이터 비교하여 로그인하기 & Token 만들기 (using jsonwebtoken)
·
Backend
이 글에서는 DB에 저장한 사용자 정보(name, email, password ...)와 사용자가 요청한 로그인 정보(email, password)를 비교해 사용자를 인증하고, 인증된 사용자에게 token을 부여하며, 로그인을 성공/실패했다는 메시지를 출력하는 기능을 만드는 방법을 알아본다. (이전 글과 이어짐) 1. login route 만들기 사용자로부터 login 정보(email, password)를 받기 위해 login route를 post로 만든다. app.post('/login', (req, res) => { // 로그인 과정 // 로그인 성공/실패 여부 메시지 출력 }) 다음으로 로그인 과정을 생각해보면, 다음과 같다. 우선 사용자가 입력한 email과 일치하는 email이 DB에 있는지 찾..