ExpressJS - 會話



HTTP 是無狀態的;為了將一個請求與任何其他請求關聯起來,您需要一種方法來在 HTTP 請求之間儲存使用者資料。Cookie 和 URL 引數都是將資料在客戶端和伺服器之間傳輸的合適方法。但它們都可以在客戶端讀取。會話解決了這個問題。您為客戶端分配一個 ID,它使用該 ID 發出所有後續請求。與客戶端關聯的資訊儲存在伺服器上,並連結到此 ID。

我們需要 Express-session,因此請使用以下程式碼安裝它。

npm install --save express-session

我們將 sessioncookie-parser 中介軟體部署到位。在這個例子中,我們將使用預設儲存來儲存會話,即 MemoryStore。永遠不要在生產環境中使用它。session 中介軟體為我們處理所有事情,即建立會話、設定會話 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,則會顯示以下輸出。

First visit

如果您重新訪問該頁面,頁面計數器將增加。以下螢幕截圖中的頁面重新整理了 42 次。

First visit
廣告

© . All rights reserved.