ExpressJS - sesje

HTTP jest bezstanowe; Aby powiązać żądanie z jakimkolwiek innym żądaniem, potrzebujesz sposobu na przechowywanie danych użytkownika między żądaniami HTTP. Pliki cookie i parametry adresu URL są odpowiednimi sposobami przesyłania danych między klientem a serwerem. Ale są one czytelne i po stronie klienta. Sesje rozwiązują dokładnie ten problem. Przypisujesz klientowi identyfikator, a wszystkie dalsze żądania wysyła przy użyciu tego identyfikatora. Informacje powiązane z klientem są przechowywane na serwerze połączonym z tym identyfikatorem.

Będziemy potrzebować sesji ekspresowej , więc zainstaluj ją przy użyciu następującego kodu.

npm install --save express-session

Umieścimy plik session i cookie-parseroprogramowanie pośredniczące na miejscu. W tym przykładzie użyjemy domyślnego magazynu do przechowywania sesji, tj. MemoryStore. Nigdy nie używaj tego w środowiskach produkcyjnych. Oprogramowanie pośredniczące sesji obsługuje wszystko za nas, tj. Tworzy sesję, ustawia plik cookie sesji i tworzy obiekt sesji wreq obiekt.

Za każdym razem, gdy ponownie wysyłamy żądanie od tego samego klienta, będziemy przechowywać u nas informacje o jego sesji (pod warunkiem, że serwer nie został ponownie uruchomiony). Do obiektu sesji możemy dodać więcej właściwości. W poniższym przykładzie utworzymy licznik wyświetleń dla klienta.

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);

To, co robi powyższy kod, to kiedy użytkownik odwiedza witrynę, tworzy nową sesję dla użytkownika i przypisuje mu plik cookie. Następnym razem, gdy użytkownik przyjdzie, sprawdzany jest plik cookie ipage_view zmienna sesji jest odpowiednio aktualizowana.

Teraz, jeśli uruchomisz aplikację i przejdziesz do localhost:3000, zostanie wyświetlony następujący wynik.

Jeśli ponownie odwiedzisz stronę, licznik stron wzrośnie. Strona na poniższym zrzucie ekranu została odświeżona 42 razy.