NodeJS 세션 express-session 모듈 써보기

2020. 3. 9. 13:40·JavaScript/Npm Modules

익스프레스에서 express-session 모듈을 붙여 사용해보는것까지 해봅시다.

먼저 사용할 프로젝트에서 npm i express-session과 npm i express를 입력해 필요한 모듈을 다운받아줍시다.

 

그리고 다음과 같은 기본 코드를  입력해줄게요.

const express = require('express');
const app=express()

app.listen(3000)

정말 간단하게 익스프레스 앱만 있는 코드인데요 여기서 세션모듈을 쓰려면

const session = require('express-session');
app.use(session({
    secret:'anysecretkey',
    resave:false,
    saveUninitialized:false,
}))

이렇게 require로 불러와준뒤에 app.use 함수에 session({옵션}) 형태로 넣어주시면

req.session이 추가가 됩니다.

옵션객체엔 여러 옵션들을 넣어줄수가있는데 전 몇가지만 설명해보겠습니다.

 

secret - 이 옵션은 어떤 키로 쿠키를 암호화할지 정해주는 옵션입니다. 필수옵션이니 꼭 넣어줍시다.

 

resave - 세션값의 변동이 있든 없든 항상 세션을 다시 저장해줄지 정하는 옵션입니다. 공식 문서에서는 false를 추천하고 필요하면 true로 바꾸라고합니다. 기본값 true입니다.

 

saveUninitialized - 세션에 저장할 내용이 있든 없든 일단 저장할지 정하는 옵션입니다. false로 두면 서버 용량을 줄일수가있겠죠? 기본값 true입니다.

 

그리고 제 코드에는 없지만 store 옵션이 있는데요

 

store - 세션을 서버에 저장할때 사용하게될 저장소를 정해줍니다. 기본값은 MemoryStore로 메모리 스토어는 서버를 재시작하거나 종료하면 저장된 세션이 없어집니다.

mysql부터 시작해 여러가지 스토어들을 사용할수 있는데요 어떤 스토어들이 있는지 살펴봅시다.

 

express-session

Simple session middleware for Express

www.npmjs.com

예를들어  mysql 스토어를 사용하려고하면 다음과 같이 쓰면됩니다.

npm i express-mysql-session으로 모듈을 다운받은뒤

var express = require('express');
var app = module.exports = express();
var session = require('express-session');
var MySQLStore = require('express-mysql-session')(session);
 
var options = {
    host: 'localhost',
    port: 3306,
    user: 'session_test',
    password: 'password',
    database: 'session_test'
};
 
var sessionStore = new MySQLStore(options);
 
app.use(session({
    key: 'session_cookie_name',
    secret: 'session_cookie_secret',
    store: sessionStore,
    resave: false,
    saveUninitialized: false
}));

지금 제가 하려는건 간단한 예제라서 사용하지 않으니 세션스토어는 넘어가겠습니다.

제가 썼던 옵션들을 설명했으니 이제 최종 코드를 입력해보겠습니다.

const express = require('express');
const session = require('express-session');
const app = express()

app.use(session({
    secret: 'anysecretkey',
    resave: false,
    saveUninitialized: false,
}))

app.get('/', function (req, res) {
    if (req.session.count!=undefined) {
        // 한번 방문하고 난뒤엔 세션에 coumt정보가 저장되서 아래 코드를 실행하게 됩니다.

        // 세션의 카운트에 1을 더합니다
        req.session.count++

        // 세션의 카운트정보를 요청의 결과로 보냅니다.
        res.send('현재 방문 횟수는 '+req.session.count)
    } else {
        // 최초 방문시에는 세션에 coumt정보가 없어 아래 코드를 실행하게 됩니다.
        req.session.count = 0
        res.send('최초 방문을 환영합니다!')
    }
})

app.listen(3000)

우리는 이제 노드로 서버에 값을 저장해두는 세션을 사용할수 있게되었습니다. 수고하셨습니다!

이해안가는부분이 있었다면 댓글로 남겨주세요

'JavaScript > Npm Modules' 카테고리의 다른 글

NodeJS mobile-detect로 모바일 정보 가져오기  (0) 2020.03.23
NodeJS node-cron 스케줄러 상세 설명  (0) 2020.03.21
'JavaScript/Npm Modules' 카테고리의 다른 글
  • NodeJS mobile-detect로 모바일 정보 가져오기
  • NodeJS node-cron 스케줄러 상세 설명
​​​​
​​​​
  • ​​​​
    개발 블로그
    ​​​​
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 오늘 배운것들
      • 프로젝트
        • NodeJs-유튜브 음질 뷰어
        • 직접 설계해본 ERD
        • URL 단축&방문수 분석 사이트
        • GPT로 영어 공부하기
      • 알고리즘
        • 백준
        • CodeSignal
        • 프로그래머스
      • JavaScript
        • Npm Modules
        • VanillaJS
        • NodeJS
      • CI&CD
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
​​​​
NodeJS 세션 express-session 모듈 써보기
상단으로

티스토리툴바