Guardar la sesión en MySQL para el Framework Express en node
Guardar la sesión en la base de datos de MySQL es sencillo utilizando el modulo express-mysql-session. Esto nos ayuda a mejorar la experiencia de usuario ya que cuando tengamos que reniciar el servidor el usuario no se vera afectado a perder su sesión.
- Instalamos el modulo: npm install express-mysql-session --save
- Importamos el modulo:
var session = require('express-session'); var MySQLStore = require('express-mysql-session')(session); //agregamos esta linea
- Agregamos nuestra base de datos MySQL (para abrir la conexion con la base de datos)
var options = { host: 'localhost', port: 3306, user: 'db_user', password: 'password', database: 'db_name' };
var sessionStore = new MySQLStore(options);
- Agregamos nuestra variable sessionStore a la configuracion de la session
app.use(session({ key: 'session_cookie_name', secret: 'session_cookie_secret', store: sessionStore, //agregamos esta linea resave: false, saveUninitialized: false }));
Esto seria todo cuando el usuario inicie sesion se almacera en una tabla llamada sessions creada por el modulo.
Nota: La tabla de bases de datos de sesiones debe crearse automáticamente cuando se utilicen opciones predeterminadas. Si por alguna razón no se ha creado la tabla, el esquema seria este:
CREATE TABLE IF NOT EXISTS `sessions` ( `session_id` varchar(128) COLLATE utf8mb4_bin NOT NULL, `expires` int(11) unsigned NOT NULL, `data` text COLLATE utf8mb4_bin, PRIMARY KEY (`session_id`) ) ENGINE=InnoDB