nodejs-mysql-sessions
Создание и использование сессий с хранилищем в MySQL.
Автоматически создает таблицу sessions в заданной базе данных MySQL.
Автоматически создает/обновляет сессии для каждого подключения.
Автоматически сохраняет зашифрованное название сессии в куки.
Автоматически удаляет просроченные сессии исходя из допустимого срока бездействия.
Использует агента (данные браузера) и опцонально IP-адрес для распознания подмены.
Формирует функционал для сохранения в сессии, извлечения и удаления из сессии данных пользователя.
Метод "start" помещает функционал и пользовательские данные в req.sessions
req.sessions.row - копия строки сессии
req.sessions.parse - объект с пользовательскими данными
req.sessions.set - функция установки пользовательских данных
req.sessions.delete - функция удаления пользовательских данных
req.sessions.pop - функция извлечения и удаления одиночных пользовательских данных (флэш-данных)
Использует
- модуль "encode-decode-cookies" для простого шифрования кукисов и взаимодействия с ними.
- модуль "model-for-mysql" для взаимодействия с БД MySQL
Подключение
var cookies = require('encode-decode-cookies')({
password : 'password',
});
var sessions = require('mysql-sessions')({
db : {
host : 'localhost',
user : 'user',
password : 'password',
database : 'database',
},
label : 'SN',
timeout : 15*60,
checkIP : false,
});
var app = function(req, res) {
cookies.start(req, res);
console.log(req.cookies);
sessions.start(req, res, function () {
console.log(req.sessions);
...
});
};
var server = require('http').createServer(app);
server.listen(2020);
Использование
Установка данных (до установки заголовков res.writeHead)
var data = {
name1 : value1,
name2 : value2,
...
};
req.sessions.set(data, function(success){});
Удаление данных (до установки заголовков res.writeHead)
req.sessions.delete( name, function(success){} );
или
req.sessions.delete( [name1, name2], function(success){} );
Извлечение и удаление удиночных данных (флэш-данных) (до установки заголовков res.writeHead)
req.sessions.pop( name, function(success, value){} );
Получение копии строки сессии
var my_session_row = req.sessions.row;
Получение всех пользовательских данных
var my_session_data = req.sessions.parse;
Получение отдельных пользовательских данных
var user_id = req.sessions.parse['user_id'];
Тестирование
Пример серверного кода для проверки работоспособности расположен в директории "_demo"
Для запуска установите конфигурацию
- модуля cookies (пароль шифрования)
- модуля sessions (параметры соединения с БД, метку куки, время допустимого бездействия и флаг проверки IP алреса).
Запуск тестового сервера (из папки "mysql-sessions")
npm run demo
Результат
http://localhost:2020