express-mysql-session_Express

miin·2022년 6월 23일
0

Express & node.js

목록 보기
9/10
post-thumbnail
  • 쿠키는 브라우저에 정보들을 저장하는 방식으로 진행된다
  • 세션은 정보를 서버에 저장해놓고 키를 통해서 브라우저와 통신하게 되는데, 이때 필요한 세션정보는 쿠키로 저장한다 => (connect.id)
  • Route 에 의한 경로 이동을 하게 되는데 html 에서는 action="path" 에 있는 경로나  a href="path" 에 있는 경로를 보고, 서버(Nodejs)로 해당 경로를 던지게 되면 서버(Nodejs) 에서는 해당 경로를 Route 로 등록해놓았을 경우 해당 경로에 대한 함수 처리를 하게 되는 방식으로 동작
//app.js
import express from 'express';
import cookieParser from 'cookie-parser';
import mysql from 'mysql2/promise';
import session from 'express-session';
import SessionStore from 'express-mysql-session';

const app = express();

const storeOption = {
  host: process.env.DB_HOST,
  port: process.env.DB_PORT,
  user: process.env.DB_USER,
  password: process.env.DB_PASS,
  database: process.env.DB_NAME,
  clearExpired: true,
  charset: 'utf8mb4_bin',
  schema: {
    tableName: 'oal_sessions', //db에 저장될 테이블명
    columnNames: {
      session_id: 'session_id', //db에 저장될 레코드명
      expires: 'expires',//db에 저장될 레코드명
      data: 'data'//db에 저장될 레코드명
    }
  }
};

const sessionStore = new MySQLStore(storeOption);

app.use(session({
    httpOnly: true, //자바스크립트를 통해 세션 쿠키를 사용할 수 없도록 함
    secret: 'Top secret',        //암호화하는 데 쓰일 키
    resave: false,            //세션을 언제나 저장할지 설정함
    saveUninitialized: true, //세션이 저장되기 전 uninitialized 상태로 미리 만들어 저장
    store: new MySQLStore(dbOptions),
    // cookie: {	//세션 쿠키 설정 (세션 관리 시 클라이언트에 보내는 쿠키)
    //     Secure: true
    // }
}))
2196
732000
101000

//login.js
//회원가입 완료 후 요청이 정상이면
    //세션생성
    req.session.user = {
      id: reqData.id,
      password: reqData.password,
      nick: reqData.nick,
    };

    req.session.save(); //세션에 저장됨

0개의 댓글