NodeJS 將 session 資料存入 MySQL
一般使用 express.js 時,使用的 session 套件為 express-session。使用記憶體存放 session 資料的做法:
const session = require('express-session');
app.use(session({
saveUninitialized: false,
resave: false,
secret: '你的 cookie 加密字串',
cookie: {
maxAge: 1200000 // 單位為毫秒
}
}));
若要將 session 存入資料庫,需要先安裝 express-mysql-session 套件。設定方式如下,其中的 db_connect2.js 請看 上篇:
const session = require('express-session');
const MysqlStore = require('express-mysql-session')(session);
const db = require(__dirname + '/db_connect2');
const sessionStore = new MysqlStore({}, db);
app.use(session({
saveUninitialized: false,
resave: false,
secret: '你的 cookie 加密字串',
store: sessionStore,
cookie: {
maxAge: 1200000
}
}));
若使用 session 可以在資料庫看到這樣的資料:
CREATE TABLE IF NOT EXISTS `sessions` (
`session_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
`expires` int(11) unsigned NOT NULL,
`data` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `sessions` (`session_id`, `expires`, `data`) VALUES
('8CDH6O91CkkY_1DpJs7h3YmzbqgQeqrF', 1588332706, '{"cookie":{"originalMaxAge":1200000,"expires":"2020-05-01T11:31:42.263Z","httpOnly":true,"path":"/"},"hello":"shinder"}');
ALTER TABLE `sessions`
ADD PRIMARY KEY (`session_id`);
沒有留言:
張貼留言