티스토리 뷰

반응형

session을 저장할 수 있는 장소는  DB cookies, webStorage, file  등 다양한 방법이 있지만 그 중에서 DB에 저장하는 방법이다. 

session 저장용으로 redis 같은 별도의 DB를 사용해도 되지만 mySQL의 sessions 테이블에 저장하는 방법이다.

먼저 필요한 모듈을 설치해준다.

npm install express-mysql-session --save

express 상단에 모듈을 선언해줘야합니다.

const session = require("express-session");
const MySQLStore = require("express-mysql-session")(session);

 

DB 연결정보가 담긴 config를 선언하고

const config = {
    host: process.env.HOST,
    port: process.env.PORT,
    user: process.env.USER,
    password: process.env.PASSWORD,
    database: process.env.DATABASE,
    connectionLimit: process.env.CONNETCIONLIMIT,
};
/*session 설정 부분*/
app.use(
    session({
        secret: process.env.SESSION_KEY, // 세션을 발급할 때 사용되는 키입니다.
        resave: false,
        saveUninitialized: false,
        store: new MySQLStore(config),
    })
);

session옵션중 store에 적은 경로가 이제 session 저장 위치가 됩니다. (다른DB or 파일로 저장할 경우 이 부분 수정)

       //로그인 로직 통과시 session에 저장하고싶은 값들 저장 가능
                                req.session.저장하고싶은변수 = 저장하고싶은값;
                                req.session.save(function () {
                                    res.send(true);
                                });

구현한 로그인 로직 통과시 req.session.save(function(){}); 작성시 store에 임의의 session 값 생성됨

req.session.변수 = 값 을 사용하면 json 형식으로 값이 저장되어 다양하게 활용 가능합니다.

mySQL로 넘어가서 sessions 테이블을 조회하면 아래와 같은 결과가 생성됩니다.

select * from sessions

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함