전체 글
-
MERN 기본파일 만들기 - 6) authentification기능 구현하기(middleware사용)NODE.JS 2021. 5. 13. 13:39
사이트에 들어가서 메뉴를 보면 로그인 한 사람만 자신의 특정 데이터를 볼 수 있도록 지정한다. 그런데 페이지를 클릭해서 들어가게 되면 반복해서 로그인을 해야하는 경우가 생기지 않도록 로그인 된 정보를 authentification해서 유지되도록 하는 기능을 구현하도록 한다. 페이지를 이동할때마다 userid가 일치하는지를 확인하기 위해서 가진 client의 token을 decode해서 server에 보내 user_id확인하는 작업을(복호화) 계속 할것이다. 이는 middleware를 이용해서 구현하도록 할 것이다. 다음과 같은 폴더와 파일을 생성해준다. auth.js파일에 다음과 같은 내용을 입력해준다. const { User } = require('../models/User'); //auth할때 사용자..
-
MERN 기본파일 만들기 - 5)login 기능 만들기(jsonwebtoken 사용)NODE.JS 2021. 5. 13. 13:28
jsonwebtoken 기능을 이용해서 입력한 정보와 db상의 정보 일치여부에 따라서 로그인 처리하는 기능을 만든다. jsonwebtoken 사용법은 다음의 사이트에서 확인가능하다. https://www.npmjs.com/package/jsonwebtoken jsonwebtoken JSON Web Token implementation (symmetric and asymmetric) www.npmjs.com npm install jsonwebtoken --save를 실행해준다. 그 다음 index.js에 login api를 만든다. 제일먼저 이메일을 찾고, 비밀번호를 비교한후, token을 생성하는 단계로 넘어간다. app.post('/api/users/login', (req, res)=>{ //find ..
-
MERN 기본파일 만들기 - 4)회원의 비밀번호 hash코드로 숨기기(bcrypt)NODE.JS 2021. 5. 13. 13:19
회원의 비밀번호 같은 정보는 mongodb에서 직관적으로 노출되면 안되기 때문에 bcrypt를 이용해서 숨겨진 상태에서 노출되도록 지정한다. 다음의 사이트에서 사용법을 확인할 수 있다. https://www.npmjs.com/package/bcrypt bcrypt A bcrypt library for NodeJS. www.npmjs.com npm install bcrypt --save 를 먼저 해주고 , register 파트에서 사용자save를 해주기 전에 비밀번호를 bcrypt해서 저장하도록 설정해줄것이다. user.save하기전에 무언가 실행되도록 설정한다. User.js에 다음과 같은 부분을 추가해준다. const mongoose = require('mongoose'); const bcrypt = ..
-
MERN 기본파일 만들기 - 3)nodemon 설치하고 private정보 숨기기NODE.JS 2021. 5. 13. 13:12
매번 변경사항이 저장될때마다 다시 서버를 껐다가 다시 킬 필요없이 바로 적용되게끔 nodemon을 설치하자 terminal에 npm install nodemon --save-dev를 실행시켜준다. 여기서 -dev는 개발 단계에서만 필요하기 때문에 개발모드에만 적용시키는 것이다. start만 눌러도 nodemon이 실행되도록 package json부분을 수정해준다. "scripts": { "start": "node server/index.js", "backend": "nodemon server/index.js", npm run backend만 눌러줘도 알아서 서버부분의 index.js를 nodemon으로 실행시켜준다. mongodb의 cluster 주소나 아이디, 비밀번호의 경우 노출되면 안되는 priva..
-
MERN 기본파일 만들기 - 2) GIT설치하고 연결, SSH 파일 생성하고 등록하기NODE.JS 2021. 5. 10. 21:16
깃은 분산 버전관리 시스템이다. 맨처음에 할 것은 node_module파일들은 버전에 따라서 내부 내용이 매번 업데이트 될 수 있기 때문에 git에 올라가지 않도록 gitignore를 설정해주는 것이다. gitignore파일을 생성해서 다음과 같은 내용을 입력해준다. git init을 해서 저장소를 생성한 후, git status를 해서 확인해보면 아직 add 되지 않은 파일들이 보일 것이다. working directory안의 파일들을 staging area로 보내기 위해선 add 해주면 된다. 다음 commit 해주면 repository에 올라가고 push해주면 원격저장소에 올라가게 된다. 일단 commit을 해서 변경내용을 저장해주자. ssh는 오가는 데이터를 모두 암호화 하는데, 여기서 공개키를 ..
-
MERN 기본파일 만들기 - 1) node, express 실행하고 mongodb연결하기, BodyParser & Postman 이용해서 register생성NODE.JS 2021. 5. 10. 20:55
https://www.youtube.com/watch?v=yScMn7iBa1g&list=PL9a7QRYt5fqly7BrCxOS71BqLLb9OeXKd&index=1&ab_channel=JohnAhn MERN공부를 할때 정말 도움이 많이 되는 사이트다. 프로젝트를 진행할 때 항상 이 boiler - plate를 가져와서 만드시는데, 이 기본 바탕을 생성하는 강의가 궁금해서 공부한다. 제일먼저 프로젝트를 만들고 싶은 폴더에 terminal로 npm init을 실행해준다. description과 name만 설정해주고 다른건 모두 엔터. vscode에서 실행 후 index.js파일을 만들어주고, npm install express --save, npm install mongoose --save를 해준다.(mon..
-
알고리즘 - 7) 다익스트라알고리즘 2021. 5. 6. 07:24
1. 다익스트라 알고리즘(한 지점에서 시작해서 모든 노드로의 최단거리 구하기) - 양방향 import heapq import sys input = sys.stdin.readline INF = int(1e9) n, m = map(int, input().split()) graph= [] for _ in range(m): a, b = map(int, input().split()) graph[a].append((b,1)) graph[b].append((a, 1)) distance = [INF]*(n+1) def dijkstra(start){ start = 0 distance[start] = 0 q = [] heapq.heappush(q, (distance[start], start)) while q: dist, ..
-
알고리즘 -3) DFS/ BFS알고리즘 2021. 5. 5. 19:34
1. DFS(stack사용) function dfs (graph, startNode){ let visited = []; let stack = [start]; while(stack.length!==0){ let n = stack.pop(); if (!visited.includes(n)){ visited.push(n); let sub = graph[n].filter(x=>!visited.includes(x)) for (let i of sub){ stack.push(i); } } } return visited; } 2. BFS(queue사용) function bfs (graph, startNode){ let queue = []; let visited = []; queue.push(startNode); whil..