node.js(16)
-
passport.js [ node.js ]
왜 passport 로그인을 사용할까? passport.js 는 서비스가 다양한 로그인을 동시에 사용해야할 때, 즉 strategy 만 짜면 나머지는 하면 알아서 된다. req.user 를 만들어 주는 것, 매번 세션 검증해주는 것 등이 내부에서 저절로 구현되기 때문에 사용한다. 1. 다양한 인증 전략 지원 passport.js 는 500개가 넘는 인증 전략을 지원한다. 이는 소셜로그인, OAuth, OpenID 등 다양한 인증 방법을 통일된 API 로 사용할 수 있게 해준다. 즉 인증 전략이 변경되거나 추가되어도 일관된 코드 구조를 유지할 수 있다. 2. 유연성과 확장성 passport.js 는 단지 인증 메커니즘을 제공하는 미들웨어일 뿐, 세션 관리나 사용자 데이터 관리 등을 직접적으로 다루지는 않는..
2023.07.27 -
에러처리 미들웨어 [ express ] [ node.js ]
다른 미들웨어 함수와 동일한 방법으로 오류 처리 미들웨어 함수를 정의할 수 있지만, 오류 처리 함수는 3개가 아닌 4개의 인수, 즉 (err. req. res, next) 를 갖는다는 점이 다르다. 오류 처리 미들웨어는 다른 app.use() 및 라우트 호출을 정의한 후에 마지막으로 정의해야 하며, 예를 들면 다음과 같다. // app.js // ... // 에러 핸들링 미들웨어 정의 app.use((err, req, res, next) => { const status = err.statusCode || 500; const errorMessage = err.message || "서버 에러"; res.status(status).json({ errorMessage, }); }); // ... 미들웨어 함수 ..
2023.07.22 -
multer
inpa Dev 님의 블로그를 참고하여 적은 글입니다. multer 란? 이미지나 동영상 등을 비롯한 여러가지 파일들을 멀티파트 형식으로 업로드 할 때 사용하는 미들웨어 이다. 멀트파트 형식이란 enctype 이 multipart/form-data 인 폼을 통해 업로드하는 데이터의 형식을 의미한다. multer 문법 storage 는 저장할 공간에 대한 정보, 디스크나 메모리 저장 기능 diskStorage 는 하드디스크에 업로드 파일을 저장한다는 것 destination 은 저장할 경로 filename 은 저장할 파일명(파일명 + 날짜 + 확장자 형식) limits 는 파일 개수나 파일 사이즈를 제한할 수 있다. const multer = require('multer'); const fs = requi..
2023.07.20 -
JWT 토큰 [ node.js ] [ express ]
JWT 토큰이란? Json 포멧을 이용해 사용자에 대한 속성을 저장하는 웹 토큰이다. JWT 는 토큰 자체를 정보로 사용한다. 주로 회원 인증이나 정보 전달에 사용된다. JWT 구조 JWT 는 Header, Payload, Signature 의 세가지 부분으로 이루어 지고, Json 형태인 각 부분은 Base64Url 로 인코딩 되어 표현된다. 또 각 부분을 이어주기 위해서 . 구분자를 사용하여 구분한다. * Base64Url 은 암호화된 문자열이 아니고 같은 문자열에 대해 항상 같은 인코딩 문자열을 반환한다. 1. Header(헤더) 토큰의 헤더는 typ 과 alg 두 가지 정보로 구성된다. { "alg": "HS256", "typ": JWT } typ : 토큰의 타입을 지정 ex) JWT alg : ..
2023.07.16 -
bcrypt 사용방법 [ Javascript ] [ node.js ]
npm i bcrypt // 비밀번호를 DB 에 넣을때 const salt = await bcrypt.genSalt(4) // 기본값은 10, 숫자가 올라갈 수록 연산 시간과 보안이 높아진다. const hashed = await bcrypt.hash('비밀번호를 넣어주세요', salt) // hash 화 된 비밀번호를 만든다. // 비밀번호를 검증할 때 const validationPassword = await bcrypt.compare('입력받은 비밀번호', 'DB에 저장된 비밀번호') // 일치한다면 validationPassword 는 true, 아니면 false
2023.07.07 -
PM2 사용
node.js & mongoDB 를 우분투에서 계속 실행할 수 있는 방법에는 PM2 가 있다. node.js 를 실행하고 관리하도록 만들어진 pm2 를 이용한다. pm2 란 프로세스 매니징 도구로 node.js 를 편하게 관리할 수 있게 도와주는 라이브러리 이다. 대표적으로 터미널을 종료하더라도 웹 서버가 실행될 수 있게 하거나 로그 정보들을 실시간으로 확인한다. sudo -s npm install -g pm2 pm2 start app.js 프로젝트 종료하는 법 pm2 delete 0 pm2 list 를 입력했을 때 프로세스가 존재하지 않다면 성공적으로 종료된 것이다. pm2 재시작 pm2 restart app.js. # app.js를 재시작합니다. pm2 restart [idNumber] pm2 관리중..
2023.06.24