Обзор
Express.js использует файл cookie для хранения идентификатора сеанса (с подписью шифрования) в браузере пользователя, а затем, при последующих запросах, использует значение этого файла cookie для получения информации о сеансе, хранящейся на сервере. Это хранилище на стороне сервера может быть хранилищем памяти (по умолчанию) или любым другим хранилищем, которое реализует необходимые методы (например, connect-redis ).
подробности
Express.js / Connect создает 24-символьную строку Base64, используя utils.uid(24)и сохраняет ее в req.sessionID. Эта строка затем используется как значение в файле cookie.
Сторона клиента
Подписанные файлы cookie всегда используются для сеансов, поэтому значение файла cookie будет иметь следующий формат.
[sid].[signature]
Где [sid] - это идентификатор сеанса, а [подпись] создается путем подписания [sid] с использованием секретного ключа, предоставленного при инициализации промежуточного программного обеспечения сеанса. Шаг подписи выполняется для предотвращения взлома. Изменение [sid] и повторное создание [подписи] без знания используемого секретного ключа должно быть вычислительно недопустимым. Сеансовые куки по-прежнему уязвимы для кражи и повторного использования, если не требуется изменение [sid].
Имя этого файла cookie
connect.sid
Сторона сервера
Если обработчик происходит после того , как cookieParserи sessionпромежуточному он будет иметь доступ к переменной req.cookies. Он содержит объект JSON, ключи которого являются ключами файлов cookie, а значения - значениями файлов cookie. Он будет содержать именованный ключ, connect.sidа его значение будет подписанным идентификатором сеанса.
Вот пример того, как настроить маршрут, который будет проверять наличие файла cookie сеанса при каждом запросе и выводить его значение на консоль.
app.get("/*", function(req, res, next) {
if(typeof req.cookies['connect.sid'] !== 'undefined') {
console.log(req.cookies['connect.sid']);
}
next(); // Call the next middleware
});
Вам также необходимо убедиться, что router ( app.use(app.router)) включен после cookieParserи sessionв ваш раздел конфигурации.
Ниже приведен пример данных, хранящихся внутри Express.js / Connect.
{
"lastAccess": 1343846924959,
"cookie": {
"originalMaxAge": 172800000,
"expires": "2012-08-03T18:48:45.144Z",
"httpOnly": true,
"path": "/"
},
"user": {
"name":"waylon",
"status":"pro"
}
}
userПоле обычай. Все остальное - часть управления сеансом.
Пример взят из Express 2.5.