ExpressJS - Сессии
HTTP не имеет состояния; чтобы связать запрос с любым другим запросом, вам нужен способ хранения пользовательских данных между HTTP-запросами. Файлы cookie и параметры URL являются подходящими способами передачи данных между клиентом и сервером. Но они оба доступны для чтения и на стороне клиента. Сеансы решают именно эту проблему. Вы назначаете клиенту идентификатор, и он делает все дальнейшие запросы, используя этот идентификатор. Информация, связанная с клиентом, хранится на сервере, связанном с этим идентификатором.
Нам понадобится Экспресс-сессия , поэтому установите ее с помощью следующего кода.
npm install --save express-session
Мы поставим session и cookie-parserпромежуточное ПО на месте. В этом примере мы будем использовать хранилище по умолчанию для хранения сеансов, то есть MemoryStore. Никогда не используйте это в производственной среде. Промежуточное ПО сеанса обрабатывает все за нас, т.е. создает сеанс, устанавливает cookie сеанса и создает объект сеанса вreq объект.
Каждый раз, когда мы снова делаем запрос от того же клиента, у нас будет храниться информация об их сеансе (при условии, что сервер не был перезапущен). Мы можем добавить дополнительные свойства к объекту сеанса. В следующем примере мы создадим счетчик просмотров для клиента.
var express = require('express');
var cookieParser = require('cookie-parser');
var session = require('express-session');
var app = express();
app.use(cookieParser());
app.use(session({secret: "Shh, its a secret!"}));
app.get('/', function(req, res){
if(req.session.page_views){
req.session.page_views++;
res.send("You visited this page " + req.session.page_views + " times");
} else {
req.session.page_views = 1;
res.send("Welcome to this page for the first time!");
}
});
app.listen(3000);
Приведенный выше код делает следующее: когда пользователь посещает сайт, он создает новый сеанс для пользователя и назначает ему файл cookie. В следующий раз, когда пользователь приходит, cookie проверяется иpage_view переменная сеанса обновляется соответствующим образом.
Теперь, если вы запустите приложение и перейдете в localhost:3000, будет отображаться следующий результат.
Если вы повторно посетите страницу, счетчик страниц увеличится. Страница на следующем снимке экрана обновлялась 42 раза.