- ExpressJS 教程
- ExpressJS - 首頁
- ExpressJS - 概述
- ExpressJS - 環境
- ExpressJS - Hello World
- ExpressJS - 路由
- ExpressJS - HTTP 方法
- ExpressJS - URL 構建
- ExpressJS - 中介軟體
- ExpressJS - 模板引擎
- ExpressJS - 靜態檔案
- ExpressJS - 表單資料
- ExpressJS - 資料庫
- ExpressJS - Cookie
- ExpressJS - 會話
- ExpressJS - 身份驗證
- ExpressJS - RESTful API
- ExpressJS - 腳手架
- ExpressJS - 錯誤處理
- ExpressJS - 除錯
- ExpressJS - 最佳實踐
- ExpressJS - 資源
- ExpressJS 有用資源
- ExpressJS - 快速指南
- ExpressJS - 有用資源
- ExpressJS - 討論
ExpressJS - 會話
HTTP 是無狀態的;為了將一個請求與任何其他請求關聯起來,您需要一種方法來在 HTTP 請求之間儲存使用者資料。Cookie 和 URL 引數都是將資料在客戶端和伺服器之間傳輸的合適方法。但它們都可以在客戶端讀取。會話解決了這個問題。您為客戶端分配一個 ID,它使用該 ID 發出所有後續請求。與客戶端關聯的資訊儲存在伺服器上,並連結到此 ID。
我們需要 Express-session,因此請使用以下程式碼安裝它。
npm install --save express-session
我們將 session 和 cookie-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,則會顯示以下輸出。
如果您重新訪問該頁面,頁面計數器將增加。以下螢幕截圖中的頁面重新整理了 42 次。
廣告
