본문 바로가기

분류 전체보기313

로그아웃 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.
리액트 연습 codepen 세팅 세팅을 누르면 아래와 같은 창이 나오는데 JS - JavaScript Preprocessor : Babel Add External Scripts/Pens 에서 검색창에 react를 넣으면 실시간으로 react 관련 CDNjs(?)가 나옴 클릭하면 추가됨 영상보면서 공부중인데 4년전 영상이라 codepen이 다르게 생겼다 일단 나는 react와 react-dom을 추가했다 react 파일은 component react-dom은 실제 dom에 렌더링을 하는 부분을 담당한다. 바벨을 쓰는 이유는 구버전 브라우저를 지원하기 위해서 최신 자바스크립트 문법을 es5 형태로 변환하려고 이용 2021. 6. 11.
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.
mongoose 다운로드 후 mongodb 연동 terminal 에서 npm install mongoose --save --save 옵션은 package.json 의 dependency 항목에 모듈을 추가해 준다. const mongoose = require('mongoose'); mongoose.connect('mongodb+srv://xectler:@cluster0.iwk4g.mongodb.net/myFirstDatabase?retryWrites=true&w=majority',{ useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true, useFindAndModify: true }).then(() => console.log('MongoDB Connected...')) .catch(.. 2021. 6. 11.