본문 바로가기

공부/nodejs11

로그아웃 app.get('/api/users/logout', auth, (res, req) => { User.findOneAndUpdate({_id: req.user._id}, {token:""}, (err, user) =>{ if(err) return res.json({ success: false, err}) return res.status(200).send({ success: true }) }) }) 로그아웃 Route 로그아웃 하려는 유저를 데이터베이스에서 찾아서 이 유저의 토큰을 지워주면 된다. 포스트맨 테스트 2021. 6. 14.
Auth 기능 authentication : 입증, 증명, 인증 이런 의미다. 웹 사이트에는 여러가지 페이지가 있다. 어떤 페이지는 로그인된 유저만 이용이 가능하고 또 어떤 페이지는 로그인 상태가 아니더라도 이용이 가능하다. 페이지 때마다 - 로그인이 되어 있는지 - 관리자인지 일반 유저인지 글을 쓸때 - 권한 체크 middleware 폴더를 만든다. auth.js 파일 만듬 const { User } = require("../models/User"); let auth = (req, res, next) => { //인증 처리 //1. 클라이언트 쿠키에서 token을 가져온다. let token = req.cookies.x_auth; //2. 토큰을 복호화한 후 유저를 찾는다. User.findByToken(token,.. 2021. 6. 13.
로그인 jsonwebtoken JSON Web Token implementation (symmetric and asymmetric) www.npmjs.com jsonwebtoken 사용방법이 나와 있음 const cookieParser = require('cookie-parser') app.use(cookieParser())//쿠키 사용 app.post('/login', (req, res) => { //요청된 이메일을 데이터베이스에서 있는 지 찾는다. User.findOne({ email: req.body.email }, (err, user) => {//몽고디비에서 제공하는 메서드 if(!user){ return res.json({ loginSuccess: false, message: '제공된 이메일에 해당하는.. 2021. 6. 13.
비밀번호 암호화 하기 Bcrypt terminal npm install bcrypt --save //index.js const mongoose = require('mongoose'); const bcrypt = require('bcrypt'); const saltRounds = 10 // salt를 이용해서 비밀번호를 암호화 해야한다. // salt 생성 // saltRounds 란 salt가 몇 글자인지 나타낸다. //saltRounds = 10이면 10자리 salt를 이용해서 비밀번호를 암호화 한다. //register route const user = new User(req.body) //유저 정보가 저장되기전 여기서 아래 User.js의 아래 코드가 실행된다. user.save((err, userInfo) => { if(err) .. 2021. 6. 13.
비밀 설정 정보 관리 config 폴더를 만들고 dev.js 파일을 만든다. (dev = development) module.exports ={ mongoURI: 'mongodb+srv://xectler:@cluster0.iwk4g.mongodb.net/myFirstDatabase?retryWrites=true&w=majority' } 개발할 때 두 가지 환경에서 할 수 있다. local 환경 development 와 deploy(배포)한 후 cloud 서비스 이용해서 개발을 할 수 있다. 이 두 가지 경우를 따로 생각해야 한다. local 환경의 development 모드는 위 작성한 dev.js에서 변수를 가져갈 수 있다. 그런데 deploy 후 HEROKU 서비스를 이용한다고 하면 따로 몽고 uri 값을 주고 dev.j.. 2021. 6. 13.
nodemon nodemon이란 노드 서버가 열린 상태로 수정을 하면 서버를 내리고 다시 기동을 시켜야 한다. 그래야 바꾼 소스가 반영이 되는데 nodemon을 이용하면 굳이 서버를 내리지 않아도 변화된 부분을 반영시켜 준다. nodemon 다운로드는 terminal에서 npm install nodemon --save-dev --save는 pakage.json에 dependency를 추가한다. -dev는 development mode 로컬에서 할 때만 이용하겠다. (정확하게는 모르겠다.) --save-dev 시 pakage.json에서 devDependency란 항목이 추가되고 여기에 추가가 된다. 그리고 "backend" 이부분은 아무렇게나 지어도 상관 없음 "nodemon index.js" 를 추가해줌으로 node.. 2021. 6. 12.
클라이언트로부터 데이터 받기 postman postman 설치 Download Postman | Try Postman for Free Try Postman for free! Join 13 million developers who rely on Postman, the collaboration platform for API development. Create better APIs—faster. www.postman.com //백엔드의 시작점 const express = require('express') //익스 프레스 모듈을 가져온다. const app = express() const port = 5000 const bodyParser = require('body-parser') const { User } = require('./models/User.. 2021. 6. 12.
nodejs model과 schema 모델이란 폴더를 만들고 안에 User.js 파일을 만들었다. const mongoose = require('mongoose'); const userSchema = mongoose.Schema({ name: { type: String, maxlength: 50, }, email: { type: String, trim: true, //x e ctler@naver.com 이런 값이 들어왔을 때 trim은 공백을 없애 준다. unique: 1 //중복된 값은 사용하지 못한다. }, password: { type: String, minlength: 5 }, lastname: { type: String, maxlength: 50 }, role: { //롤은 어떤 유저가 관리자가 될 수도 있고 일반 유저가 될 수 있.. 2021. 6. 11.
express 다운로드 명령어 npm install express --save --save는 pakage.json 에 express를 사용하고 있다고 표시도 하고 추가가 된다. 나중에 이 모듈을 사용하기 위해서 필요한 듯? 2021. 6. 10.
npm init pakage.json 생성 pakage.json 만들 때 터미널에서 npm init 적지 않으면 (default) 의 값을 가지고 ()이 없는 것은 값이 없어도 된다. pakage-name: (name) - 패키지 이름 version: (1.0.0) - 패키지 버전 description: entry-point: (index.js) - 자바스크립트 실행 파일 test-command: - 코드를 테스트 할 때 입력할 명령어 git-repository: - 코드를 저장할 git 저장소 주소 keywords: - npm 공식 홈페이지에서 패키지를 쉽게 찾을 수 있게 도와줌 author: - 이름 license: (ISC) - 해당 패키지의 라이센스 여기까지 했으면 아래 물어보는데 엔터치면 된다. Is this Ok? (yes) 그러면 p.. 2021. 6. 10.