Socket
Socket
Sign inDemoInstall

mysql-sessions

Package Overview
Dependencies
14
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    mysql-sessions

Sessions for MySQL


Version published
Maintainers
1
Install size
1.12 MB
Created

Readme

Source

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,	//Проверять изменение IP					
});

//Формируем задачу
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

Keywords

FAQs

Last updated on 11 Jan 2021

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc