Учебники

Koa.js — Сессии

HTTP не имеет состояния, поэтому, чтобы связать запрос с любым другим запросом, вам нужен способ хранения пользовательских данных между HTTP-запросами. Файлы cookie и параметры URL являются подходящими способами передачи данных между клиентом и сервером. Тем не менее, они оба читаемы на стороне клиента. Сессии решают именно эту проблему. Вы назначаете клиенту идентификатор, и он делает все дальнейшие запросы, используя этот идентификатор. Информация, связанная с клиентом, хранится на сервере, связанном с этим идентификатором.

Нам понадобится koa-сессия, поэтому установите его, используя —

npm install --save koa-session

Мы установим промежуточное программное обеспечение для коа-сессии . В этом примере мы будем использовать оперативную память для хранения сессий. Никогда не используйте это в производственных условиях. Промежуточное программное обеспечение сеанса обрабатывает все, то есть создает сеанс, устанавливает cookie сеанса и создает объект сеанса в объекте контекста.

Всякий раз, когда мы делаем запрос от того же клиента снова, мы будем хранить информацию об их сеансе у нас (учитывая, что сервер не был перезапущен). Мы можем добавить больше свойств к этому объекту сеанса. В следующем примере мы создадим счетчик просмотров для клиента.

var session = require('koa-session');
var koa = require('koa');
var app = koa();

app.keys = ['Shh, its a secret!'];
app.use(session(app));  // Include the session middleware

app.use(function *(){
   var n = this.session.views || 0;
   this.session.views = ++n;
   
   if(n === 1)
      this.body = 'Welcome here for the first time!';
   else
      this.body = "You've visited this page " + n + " times!";
})

app.listen(3000);

Приведенный выше код делает, когда пользователь посещает сайт, он создает новый сеанс для пользователя и назначает cookie. В следующий раз, когда пользователь заходит, cookie проверяется, и переменная сеанса page_view соответствующим образом обновляется.

Теперь, если вы запустите приложение и перейдете на localhost: 3000, вы получите следующий ответ.

Первая сессия

Если вы вернетесь на страницу, счетчик страниц увеличится. В этом случае страница обновлялась 12 раз.