- session
세션이란 일정 시간동안 사용자(브라우저)로부터 들어오는 값의 상태를 유지시키는 것,
로그인 시 접속 유지를 시키기 위해 세션을 사용
특징
- 웹 서버에 상태를 유지하기 위한 정보를 저장
- 각 클라이언트 고유 Session ID를 부여한다. Session ID로 클라이언트를 구분하여 각 클라이언트 요구에 맞는 서비스 제공
- Object 형식으로 저장
- 쿠키보다 보안이 좋다
- 서버가 허용하는 한 용량제한이 없다.
npm install express-mysql-session --save
app.js
var mysql_info = require('./config/db_info');
var sessionStore = require("express-mysql-session");
app.use(session({
store : new sessionStore({
host : mysql_info.host,
port : mysql_info.port,
user : mysql_info.user,
password : mysql_info.password,
database : mysql_info.database,
clearExpired : mysql_info.clearExpired,
checkExpirationInterval : mysql_info.checkExpirationInterval,
expiration : mysql_info.expiration,
}),
secret : mysql_info.secret,
resave: mysql_info.resave,
saveUninitialized: mysql_info.saveUninitialized,
cookie : {
maxAge : mysql_info.cookieMaxAge
},
}));
db_info.js
const minutes = 1000 * 60;
const hours = 1000 * 60 * 60;
joo : {
host : "",
port : 3306,
user : "",
password : "",
database : "my_db",
connectionLimit : 5000,
waitForConnection : true,
multipleStatements : true,
secret : "sessionKey",
resave : false,
saveUninitialized : false,
cookieMaxAge : hours,
clearExpired : true, // 만료 된 세션을 자동으로 확인하고 지울지 여부
checkExpirationInterval : minutes, // 만료 된 세션이 삭제되는 빈도(밀리 초)
expiration : hours, // 유효한 세션의 최대 수명(밀리 초)
},
세션이 DB들어오는 정보
세션 삭제(logout)
router.get('/logout', function(req, res, next) {
req.session.destroy(function(err) {
res.redirect("/");
});
});
추가로 스키마 추가하는법
store 안에 넣어주면된다
schema : {
tableName : 'session',
columnNames : {
session_id : 'session_id',
expires : 'expires',
data : 'data'
}
}
'Programing > node js' 카테고리의 다른 글
node js ejs (0) | 2021.03.02 |
---|---|
node js pm2 (0) | 2021.02.23 |
node js async 모듈 (0) | 2021.02.17 |
node js panolens.js 360이미지 (0) | 2021.01.14 |
node js 네이버 계정으로 로그인 (passport-naver) (0) | 2021.01.12 |