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.