본문 바로가기

Node.js9

로그아웃 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.
클라이언트로부터 데이터 받기 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.