본문 바로가기
반응형

node.js31

Express - 페이스북 로그인 구현 페이스북 로그인 구현 회원정보를 보관하는 것은 회원입장에선 불편하고, 서비스 입장에선 부담되는 일입니다. 이런 문제를 해결하기 위해서 최근에는 페이스북이나 구글과 같은 기업들이 로그인 연동 기능을 제공한다. 이를 Federated Identity라고 하고 Passport.js를 이용하면 이를 쉽게 구현할 수 있다. npm install -s passport-facebook 위의 코드를 입력하여 페이스북 로그인 구현을 위한 모듈을 다운로드한다. var = FacebookStrategy = require('passport-facebook').Strategy; passport.use(new FacebookStrategy({ clientID: FACEBOOK_APP_ID, clientSecret: FACEBOO.. 2021. 1. 20.
Express - 비밀번호 암호화 비밀번호 암호화 아래와 같이 회원정보가 들어있는 파일에 비밀번호가 암호화 되어있지 않는다면 보안에 심각한 문제를 초래할 수 있다. 아래 링크 페이지에 자세한 사용설명이 존재한다. www.npmjs.com/package/bcrypt bcrypt A bcrypt library for NodeJS. www.npmjs.com npm install -s bcrypt 비밀번호를 암호화하는 프로그램 모듈이 따로 존재하기에 위의 명령어를 입력하여 프로그램을 다운받는다. syntax/bcrypt.js //따로 bcrypt 프로그램을 구동시킬 코드를 모아둔 파일 만듬. var bcrypt = require('bcrypt'); //bcrypt 모듈 연동 const saltRounds = 10; const myPlaintex.. 2021. 1. 19.
Express - 다중 사용자 구현(회원가입) 다중 사용자 구현(회원가입) 1. 회원가입 UI 구현 lib/auth.js module.exports = { isOwner: function(request, response){ if(request.user){ return true; } else{ return false; } }, statusUI: function(request, response){ //register UI 추가 var authStatusUI = 'login | Register' if(this.isOwner(request, response)){ authStatusUI = `${request.user.nickname} | logout`; } return authStatusUI; } } lib/template.js module.exports .. 2021. 1. 19.
Express - session을 이용한 로그인 인증 구현 session을 이용한 로그인 인증 구현 로그인 기능을 구현하여 올바른 값을 입력하여 로그인이 되면 생성 및 수정을 할 수 있는 권한을 주었고 또 로그인을 하면 설정해둔 닉네임이 웹 화면상에 등장하도록 하였다. 로그인을 하지 않았다면 생성 및 수정을 할 수 없도록 제한을 걸어두는 간단한 로그인 기능들을 구현하였다. main.js var express = require('express'); var app = express(); var fs = require('fs'); var bodyParser = require('body-parser'); var compression = require('compression'); var helmet = require('helmet') app.use(helmet()); v.. 2021. 1. 16.
Express - express-session의 기본 개념 express-session 쿠키로만 로그인 기능을 구현하면 보안상 매우 치명적인 결함이 존재한다. 로그인을 할 수 있는 정보인 쿠키값이 그대로 노출되기 때문이다. 이때 express의 미들웨어인 session을 이용하면 이러한 문제점을 보안할 수 있다. 아래 사이트에서 세션에 대한 사용방법과 예가 나와있다. http://expressjs.com/en/resources/middleware/session.html Express session middleware express-session Installation This is a Node.js module available through the npm registry. Installation is done using the npm install comman.. 2021. 1. 16.
Express - 쿠키를 이용한 인증 기능 구현하기 쿠키를 이용한 인증 기능 구현하기 main.js var http = require('http'); var fs = require('fs'); var url = require('url'); var qs = require('querystring'); var template = require('./lib/template.js'); var path = require('path'); var sanitizeHtml = require('sanitize-html'); var cookie = require('cookie'); //쿠키를 사용하기 위한 추가 //올바른 쿠키 데이터이 들어오면 isOwner가 false에서 true가 되도록 하는 함수 따로 만듬. function authIsOwner(request, resp.. 2021. 1. 15.
Express - 쿠키의 옵션 쿠키의 옵션 Session 쿠키 와 Permanent 쿠키 웹브라우저를 끄면 사라지는 휘발성 쿠키를 Session cookie라고 하고 웹브라우저를 꺼도 사라지지 않는 쿠키를 Permanent cookie라고 한다. var http = require('http'); var cookie = require('cookie'); http.createServer(function(request, response){ console.log(request.headers.cookie); var cookies = {}; if(request.headers.cookie !== undefined){ cookies = cookie.parse(request.headers.cookie); } console.log(cookies.yum.. 2021. 1. 15.
Express - 쿠키의 기본 개념 쿠키의 기본 개념 쿠키란 하이퍼 텍스트의 기록서의 일종으로서 인터넷 사용자가 어떠한 웹사이트를 방문할 경우 그 사이트가 사용하고 있는 서버를 통해 인터넷 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일을 일컫는다. HTTP 쿠키, 웹 쿠키, 브라우저 쿠키라고도 한다. 이 기록 파일에 담긴 정보는 인터넷 사용자가 같은 웹사이트를 방문할 때마다 읽히고 수시로 새로운 정보로 바뀐다. 쿠키 생성 var http = require('http'); http.createServer(function(request, response){ response.writeHead(200, { 'Set-Cookie':['yummy_cookie=choco', 'tasty_cookie=strawberry'] }); response.en.. 2021. 1. 15.
Express - 라우터의 파일로 분리 정리 라우터의 파일로 분리 정리 관리하는 페이지가 많아짐에 따라서 코드의 복잡도가 급격히 높아지게 된다. 복잡도를 낮추는 방법이 라우터다. 주소체계변경 main.js var express = require('express') var app = express() var fs = require('fs'); var path = require('path'); var qs = require('querystring'); var bodyParser = require('body-parser'); var sanitizeHtml = require('sanitize-html'); var compression = require('compression') var template = require('./lib/template.js').. 2021. 1. 14.
Express - 에러처리 에러처리 app.use(function(req, res, next) { res.status(404).send('Sorry cant find that!'); }); app.use(function (err, req, res, next) { console.error(err.stack) res.status(500).send('Something broke!') }); 위의 코드들을 맨 아래에 적용하면 에러 발생시 설정한 값이 뜨도록 설정할 수 있다. main.js const express = require('express') const app = express() const port = 3000 var fs = require('fs'); var qs = require('querystring'); var templ.. 2021. 1. 14.
Express - 정적인 파일의 서비스 정적인 파일의 서비스 express에서 이미지, 자바스크립트, CSS와 같은 파일을 서비스하는 방법이 있다. app.use(express.static('public')); 위 코드를 추가시켜줘야 정적인 파일을 적용할 수 있다. main.js const express = require('express') const app = express() const port = 3000 var fs = require('fs'); var qs = require('querystring'); var template = require('./lib/template.js'); var path = require('path'); var sanitizeHtml = require('sanitize-html'); var bodyParse.. 2021. 1. 14.
Express - 미들웨어 미들웨어 미들웨어는 누군가 미리 만들어 놓은 코드를 부품을 쓰듯이 생산성을 높이기 위하여 쓸 수 있는 기능이라고 말할 수 있다. express 자체가 미들웨어로 구성되어있다고 해도 무방하다. 미들웨어 사용하기 body-praser라는 node.js 코드를 더 간결하고 간단하게 해주는 미들웨이로 예를 들어 보겠다. expressjs.com/en/resources/middleware/body-parser.html Express body-parser middleware body-parser Node.js body parsing middleware. Parse incoming request bodies in a middleware before your handlers, available under the req.. 2021. 1. 14.
Express - Express 홈페이지 구현 적용 Express 홈페이지 구현 적용 홈페이지 기본 구현 onst express = require('express') const app = express() const port = 3000 var fs = require('fs'); var template = require('./lib/template.js'); app.get('/', (request, response) => { fs.readdir('./data', function(error, filelist){ var title = 'Welcome'; var description = 'Hello, Node.js'; var list = template.list(filelist); var html = template.HTML(title, list, `${tit.. 2021. 1. 14.
Express - 기본 세팅 시작 기본 세팅 시작 npm install exppress --save 위 코드를 node.js가 실행된 상태에서 터미널에 명령하여 express 프로그램을 다운로드한다. expressjs.com/ko/starter/hello-world.html Express "Hello World" 예제 Hello world 예제 기본적으로 이 앱은 여러분이 작성할 수 있는 가장 간단한 Express 앱일 것입니다. 이 앱은 하나의 파일로 된 앱이며 Express 생성기를 통해 얻게 되는 앱과는 같지 않습니다. (이 예제 expressjs.com 위 사이트에 들어간다. express가 실행되는지 확인하는 간단한 코드가 주어진다. const express = require('express') const app = expres.. 2021. 1. 14.
Node.js and Mysql - 저자 관련 기능 구현 저자 관련 기능 구현 1. 저자 목록 보기 기능 구현 main.js var http = require('http'); var fs = require('fs'); var url = require('url'); var qs = require('querystring'); var template = require('./lib/template.js'); var db = require('./lib/db'); var topic = require('./lib/topic'); var author = require('./lib/author'); var app = http.createServer(function(request,response){ var _url = request.url; var queryData = url... 2021. 1. 12.
Node.js and Mysql - Node.js 정리정돈 Node.js 정리정돈 1. DB 설정정보 정리정돈 이제 정리정돈의 첫 시작으로 mysql을 연동시켰던 코드를 따로 분리하여 파일을 만들고 그 안에 따로 만들어 놓는다. 그리고 모듈화를 통해 main.js와 연동시켜준다. 위와 같이 db.js 파일을 main.js에 연동시켜주었다. 2. Node.js 코드의 정리정돈 (topic) topic.js라는 파일을 따로 만들어 mysql을 사용하여 node.js에 적용한 코드들을 그대로 따로 만든 파일에 옮긴 후 모듈화시켜 더욱 복잡하지 않게 하여 업무의 효율성을 더욱 높여주었다. 보기에도 깔끔하고 가독성이 좋아졌다. main.js var http = require('http'); var fs = require('fs'); var url = require('ur.. 2021. 1. 11.
Node.js and Mysql - My SQL join을 이용해서 구현하기 My SQL join을 이용해서 구현하기 mysql에 들어있는 위 두 테이블 데이터를 JOIN 기능을 Node.js에 적용하여 더 효율적으로 코드를 작성할 수 있다. 1. My SQL join을 이용해서 상세보기 구현 Main.js var http = require('http'); var fs = require('fs'); var url = require('url'); var qs = require('querystring'); var template = require('./lib/template.js'); var path = require('path'); var sanitizeHtml = require('sanitize-html'); var mysql = require('mysql'); var db = .. 2021. 1. 11.
Node.js and Mysql - Node.js에 My SQL 구현하기 Node.js에Nodejs에 My SQL 구현하기 1. mysql npm 세팅 $ npm install mysql 터미널에 위의 코드를 입력하여 mysql의 npm을 설치한다. mysql npm 홈페이지에서 복사해올 수 있는 세팅 코드를 js 파일 하나를 만들어 삽입한다. 주의할 점은 user, password, database의 mysql에서 설정했던 값들을 잘 입력해야한다. 이제 터미널에 $ npm install mysqljs/mysql을 입력하면 mysql의 데이터베이스 입력 데이터들이 쭉 나열되는 것을 확인 할 수 있다. 2. Node.js에 mysql 코드 설정 main.js var http = require('http'); var fs = require('fs'); var url = requi.. 2021. 1. 11.
React.js - 리액트 개발 환경 구축하기 리액트 개발 환경 구축하기 1. node.js에 들어가 node.js 프로그램을 다운로드한다. 최신 버전보다는 안정화 버전을 다운받는 것이 좋다. nodejs.org/ko/ Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 2. 명령 프롬프트를 실행하여 npm과 react.js을 구축한다. npm -v을 입력하고 엔터를 친다. npm install -g create-react-app@2.1.8을 입력하고 다시 엔터를 치면 npm이 다운로드되어 깔린다. 이제 react을 설치할 준비가 되었으므로 create-react-app을 써주어 언터를 누르면 구축 준비가 된다. 이제 바탕화면에 react.. 2020. 12. 30.
Node.js - 출력정보에 대한 보안 출력정보에 대한 보안 페이지에서 사용자가 업데이트나 수정을 하였을때 폼 값 자체를 태그와 같은 것으로 버그를 유발하며 출력 정보를 조작할 수 있다. 아래의 예처럼 태그로 alert 경고창을 뜨게 하도록 할 수도 있다. 이러한 버그는 아주 기본적인 예시일 뿐이며 더 나아간다면 정보 탈취 등등 많은 심각한 보안 문제로 사건이 커질 수 있다. 이를 해결하기 위해서는 필터링 처리를 하는 일명 '소독'이 필요하다. 아래 사이트는 npm이라는 모듈의 정보를 서비스 제공하는 사이트이다. 여기서 HTML의 와 같은 태그들을 필터링하기 위한 모듈 서비스 중 하나인 "sanitize-html"의 모듈을 찾을 수 있다. 유의할 점은 npm 모듈을 모두 신뢰하면 안된다. 사이트에 들어가 다른 개발자 사용자들의 후기와 다운로드.. 2020. 12. 26.
Node.js - 입력정보에 대한 보안 입력정보에 대한 보안 입력정보와 관련해서 보안적으로 처리해야 할 이슈가 있다. 아래와 같이 ../password.js 을 입력해주어 파일을 접근 시도를 하여 보안이 없다면 쿼리데이터는 알려주지 말아야할 파일 목록들을 그대로 노출시키는 이슈가 발생할 수 있다. 그래서 아래와 같이 path라는 메소드를 통해 ../을 통한 상위 디렉토리로 접근할 수 있는 경로를 차단해주었다. var http = require('http'); var fs = require('fs'); var url = require('url'); var qs = require('querystring'); var template = require('./data/muse.js'); var path = require('path'); //path라는.. 2020. 12. 26.
Node.js - 기본적인 CRUD APP 기능들 구현하기 기본적인 APP 기능들 구현하기 1. 글생성 UI 만들기 var http = require('http'); var fs = require('fs'); var url = require('url'); // templateHTML 이름의 함수를 만들어 이 함수 안에 문서 내용을 넣어두었다. function templateHTML(title, list, body){ return ` WEB ${list} // '/create'라는 페이지 링크를 하나 만들어주었다. create ${body} `; } function templateList(filelist){ var list = ''; var i = 0; while(i < filelist.length){ list = list + `${filelist[i]}`; i .. 2020. 12. 19.
Node.js - Node.js에서 동기와 비동기 Nodejs에서 동기와 비동기 Node.js는 비동기적인 실행에 특화되어있다고 할 수 있다. 여기서 비동기와 동기를 설명하자면 동기는 차례대로 하나씩 하나씩 일을 처리해나가는 것이라면 비동기는 동시에 일을 처리해나가는 더 효율적인 방법이라고 말할 수 있다. 동기 var fs = require('fs') console.log('A'); var result = fs.readFileSync('fileB','utf8'); console.log(result); console.log('C'); 동기를 코드로 표현하였다. readFileSync 메소드는 file을 읽어오는 메소드이다. 여기서 불러올 fileB에는 텍스트 'B'가 저장되어 있다. 코드 결과를 보면 위에서부터 차례대로 결과가 쭉 나열되어 있는 것을 알 .. 2020. 12. 12.
Node.js - 파일 목록 알아내기 파일 목록 알아내기 파일을 한꺼번에 혹은 편리하게 관리하기 위해서는 컴퓨터에 파일 목록을 맡겨야한다. 즉 파일 목록을 알아내어 보내줘야 한다는 것이다. 아래 코드는 특정 폴더안에 있는 파일 리스트를 불러오는 코드이다. var testFolder = './data'; var fs = require('fs'); fs.readdir(testFolder, function(error, filelist){ console.log(filelist); }) data 폴더 안에 있는 파일 리스트들을 프롬프트 명령으로 불러온 것을 확인 할 수 있다. 응용 var http = require('http'); var fs = require('fs'); var url = require('url'); var app = http.cr.. 2020. 12. 12.
Node.js - 홈페이지 구현 홈페이지 구현 조건문을 활용해서 홈페이지를 표현하는 방법이 존재한다. 위의 웹의 본문의 WEB의 링크에는 아직 쿼리 스트링의 값이 정의가 되지 않아서 WEB 링크를 클릭하면 정의되지 않았다는 undefined가 변환되어버린다. 그래서 만약 쿼리 스트링 값이 정의되지 않으면 발동되는 조건문을 추가한다면 undefined 표시를 안뜨게 변환 할 수 있다. ↓ var http = require('http'); var fs = require('fs'); var url = require('url'); var app = http.createServer(function(request,response){ var _url = request.url; var queryData = url.parse(_url, true).qu.. 2020. 12. 5.
Node.js - Not found 오류 구현 Not found 오류 구현 존재하지 않는 정보에 대한 요청이 들어왔을 때 Not found 오류 메시지를 전송하는 방법이 있다. 아래는 주어진 URL 정보를 추출한 것을 콘솔로 도출해 본 것이다. 위에서 도출된 URL 정보 중에 pathname이 중요한데 pathname의 '/'은 localhost:3000/' 에서 '/' 기호인데 path(경로)의 시작을 알려준다. 즉 '/폴더/폴더/파일.확장자'를 통틀어 pathname이라고 말할 수 있으며 만약에 사이트가 존재하지 않는다면 '/ '뒤의 모든 값들을 반환시키므로 pathname의 '/'는 false다. pathname의 '/' 정보를 이용하여 Not found 오류 구현 코드를 작성할 수 있다. ↓ var http = require('http'); .. 2020. 12. 5.
Node.js - 콘솔에서의 입력값 콘솔에서의 입력값 콘솔 환경에서 앱을 실행할 때 입력 값을 전달하는 방법이 있다. 예를 들면 배열을 노드에 넣어주는 방법이 있다. 아래 코드는 Argument 즉 배열을 노드에 넣어 실행 할 수 있는 자바스크립트 코드이 var args = process.argv; console.log(args); 노드에서 실행 결과 위와 같이 배열이 노드에 들어 간 것을 확인할 수 있다. 위에서 볼 수 있듯이 규칙적인 것인 노드에 넣어진 배열의 0번과 1번은 노드라는 프로그램과 노드에 배열을 넣게 하는 자바스크립트 코드가 담긴 js파일이 고정적으로 정해져 있어 실질적으로 쓰는 것은 2번 부터 이다. 그래서 js 파일 실행 명령어 오른쪽 끝에 jinseok과 kim이라는 값을 적어 배열 값을 주었는데 배열 2번과 3번에 .. 2020. 12. 5.
Node.js - 파일 읽기 파일 읽기 var fs = require('fs'); fs.readFile('TEST.txt', 'utf8', function(err, data){ console.log(data); }); 위의 코드는 외부 파일을 불러오는 노드에서 실행 할 수 있는 자바스크립트 코드이다. TEST.txt라는 텍스트가 적혀있는 텍스트 파일을 만든다. 그리고 js 파일에 노드에서 실행 할 수 있는 자바스크립트 코드를 적는다. readFile이라는 메소드의 첫 번째 인자가 외부에서 불러올 텍스트 파일 TEXT.txt이다. node fileread.js을 명령 프롬프트에 입력하여 실행하면 TEST.txt 텍스트 파일의 내용이 도출되는 것을 확인 할 수 있다. 응용 data 라는 이름으로 폴더를 만들고 그 안에 순수 텍스트 파일.. 2020. 12. 5.
Node.js - URL와 query string URL 위의 설명은 URL의 기본 구조이다. 여기서 중요한 것은 query string이다. 쿼리 스트링에 따라서 데이터를 출력하고 또 그 데이터들을 바꿀수 있다는 사실을 알아야 한다. query string의 성질 알아보기 예제 실험 var http = require('http'); var fs = require('fs'); var url = require('url'); var app = http.createServer(function(request,response){ var _url = request.url; // 쿼리 데이터를 추출하게끔 3행에서 url이라는 모듈을 사용한다고 변수를 선언해주고 //8,9행의 코드를 추가시켰다. var queryData = url.parse(_url, true).qu.. 2020. 12. 5.
Node.js - javascript 기본 언어 실행 javascript 기본문법 실행 간단한 자바스크립트 언어를 적어 보았다. 숫자 연산, 변수, 문자으로 구성해보았다. js 파일 이름은 node1.js으로 설정하였다. 위의 언어들 말고도 비교연산자 boolean 제어문 조건문 등등 모든 자바스크립트 언어 적용 가능하다. 명령 프롬프트를 켜고 node -v을 입력하여 노드를 실행시키고 코드 파일이 들어있는 폴더와 디렉토리를 연동시킨 후 dir/w을 입력하여 명령한다. (윈도우 기준이다.) 그리고 node node1.js을 입력하면 자바스크립트 언어를 코드로 저장한 js파일에 연결된다. 위와 같이 node1.js 파일의 자바스크립트 코드의 결과들이 나오는 것을 확인 할 수있다. Template Literal 여러줄로 이루어진 문자열의 표현과 문자의 치환을 .. 2020. 12. 5.
반응형