백엔드

Concurrently 백엔드 서버와 프런트엔드 서버를 둘 다 동작시켜야 하기 때문에 많이 번거롭다. 이를 한 번에 동작시켜주는 라이브러리가 있다. 이를 설치하여 좀 더 쉽게 구현해보자. 우선 설치를 하자. npm install concurrently --save 설치가 완료되면 다음과 같이 스크립트를 작성하면 된다. 여기서 --prefix client는 client디렉터리에 작성된 npm run start를 의미한다. 즉, clinet 에서 정의한 스크립트를 실행하게 된다. 실행해보면 모든 서버가 잘 동작하는 것을 볼 수 있다.
로그아웃 회원가입과 로그인 기능은 이미 만들었다. 이제 로그아웃 기능을 만들어 보자. 로그인된 유저가 로그아웃을 원한다면 유저의 아이디를 찾아 token을 지워주면 된다. token을 지운다면 clinet가 갖고 있던 token과 일치하는 유저를 찾을 수 없기 때문에 token만 지워도 로그아웃이 된다. 로그아웃 라우터를 우선 만들자. app.get('/api/users/logout', auth, (req, res) => { User.findOneAndUpdate({_id: req.user._id}, {token: ""}, (err, user) => { if(err) return res.json({success: false, err}) return res.status(200).send({ success:..
Auth 기능 어떤 페이지에 로그인된 유저만 사용 가능하게 만들어야 하는 기능이 필요하다. 따라서 로그인하여 Token이 발급된 유저만 사용 가능하게끔 만드는 Auth기능을 만들어야 한다. Cookie에 저장된 token을 decode 우선 auth를 위한 middleware가 필요하니 middleware 폴더를 root에 만든 뒤, auth.js파일을 생성하여 다음과 같이 작성한다. const { User } = require("../models/User"); let auth = (req, res, next) => { //인증 처리 //client cookie token 가져오기 let token = req.cookies.x_auth; //토큰 복호화 & user 찾기 User.findByToken(t..
로그인 기능 만들기 우선 로그인을 하려면 요청된 이메일이 데이터베이스에 있는지 찾아야 한다. 그다음 요청된 비밀번호와 같은지 여부를 판단한다. 만약 둘 다 일치한다면 Token을 생성하면 된다. 이메일 확인하기 우선 엔드포인트는 './login'으로 하고 post 메서드를 하나 추가한다. 그 후 몽고DB 메서드인 findOne 메서드를 사용하여 일치하는 email을 찾는다. 만약 존재하지 않는다면 실패 메시지를 전달한다. 일치하는 email이 있다면 비밀번호를 비교한다. app.post('/login', (req, res) => { //요청된 이메일을 DB에서 찾는다 User.findOne({ email: req.body.email }, (err, user)=> { if(!user){ return res..
Nodemon 소스를 변경하면 서버를 재부팅을 해야 한다. 서버를 껐다가 켜는 작업을 해야 하기 때문에 매우 귀찮고 번거로워진다. Nodemon은 이런 작업을 자동으로 해주는 tool이다. 소스를 변경하면 자동으로 서버에 적용이 된다. Nodemon 설치 npm install nodemon --save-dev -dev는 local에서만 사용하겠다는 명령어이다. dependencies와 devDependencies가 구분이 되어 있는 것을 볼 수 있다. 또한, nodemon으로 실행할 수 있게 script를 하나 만들어 준다. "dev"라는 이름으로 nodemon으로 실행을 할 수 있게 한다.
Model&Schema Schema는 데이터의 구조나 타입, 길이 등의 정보를 담고 있는 것이다. Model은 Schema를 감싸고 있는 것이라 생각하면 된다. models라는 폴더를 생성해 model을 관리해보자. 그 후, models폴더 안에 User.js파일을 만들어 보자. const mongoose = require('mongoose') const userSchema = mongoose.Schema({ name: { type: String, maxlength: 50 }, email:{ type: String, trim: true, unique: 1 }, password:{ type: String, minlength: 5 }, lastname:{ type: String, maxlength: 50 }..
MongoDB 연결하기 https://www.mongodb.com/cloud/atlas/lp/try2?utm_source=google&utm_campaign=gs_apac_south_korea_search_brand_atlas_desktop&utm_term=mongodb&utm_medium=cpc_paid_search&utm_ad=e&utm_ad_campaign_id=1718986522&gclid=CjwKCAiA8ov_BRAoEiwAOZogwRJOWJo-GuKttO0DxA5P0m9m3E-wXqcPuVXeRGbLlk41JZeTp1llRBoCoIEQAvD_BwE MongoDB Atlas: Cloud Document Database Cloud-hosted MongoDB service on AWS, Azure,..
Node.js란? node.js는 쉽게 말해 JavaScript를 서버단에서 사용할 수 있는 언어라고 생각하면 된다. 즉, 서버를 구축하는데 사용되는 언어이다. express.js node.js가 자동차의 엔진이면 express.js는 엔진을 가지고 자동차를 만드는 것이다. node를 이용하여 서버를 구축할 때 사용되는 것이다. 환경설정 node.js 설치를 해야 한다. https://nodejs.org/ko/ Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 여기서 설치를 하면 된다. 설치가 완료되면 cmd나 git-bash를 켜서 확인을 한다. node -v라는 명령어로 확인할 수 있다...