2023/12/13

Express 加入 Session 機制

作者:吳祐賓



這篇文章會介紹 Express 加入 Session 中介軟體後具備狀態管理能力,處理機敏資料來說,Session 仍是一個還蠻不錯的機制,不一定需要全有或是全無。接下來帶您一步一步將 Session 功能建立起來。

安裝 express-session 套件

express-session 安裝是在 Terminal 下輸入以下指令:

npm install express-session


 

建立 Session 中介軟體

建立 Session 中介軟體讓每個 request 進來時都要先經過它來處理及管理 session。將以下的程式碼複製到 server.js 裡。



const session = require('express-session');

// 設定 express-session 中介軟體
app.use(session({
    secret: 'your-secret-key',
    resave: false,
    saveUninitialized: true,
}));


以下是對這段程式碼的解釋:

  1. express-session 是一個 Express 中的中介軟體,它用於管理用戶的會話,並將會話資訊存儲在伺服器端。這是一種在無狀態的 HTTP 協議上實現有狀態的解決方案。

  2. app.use(session(...)):這行程式碼使用 app.use 方法將 express-session 中介軟體套用到 Express 應用程式中。這確保在每個請求進入伺服器之前,express-session 中介軟體都會處理和管理會話。

  3. 中介軟體的設定選項:

    • secret:這是一個字串,用於簽署(sign)用戶會話,以防止被竄改。應該是一個安全的隨機字串,這是確保會話安全性的一部分。
    • resave:如果為 true,則每次請求進來時都會重新保存會話,即使是未修改的。這通常設置為 false,以避免不必要的會話存儲操作。
    • saveUninitialized:如果為 true,則未初始化的會話也會被保存。未初始化的會話是指新會話但未被修改的會話。通常設置為 true

這段程式碼確立了一個基本的 express-session 配置,以啟用用戶會話的管理功能。這樣,當用戶進行登入等操作時,你就可以使用 req.session 物件來存儲和訪問相關的會話資訊。底下可以看到使用 session 前和使用 session 後的 response 內容。


使用 session 前

使用 session 後


總結

使用 session 中介軟體可以使 Express RESTful 服務提供會話機制,在日後如果要管理使用者狀態是一個不可或缺的套件,而透過實作可以知道,要在 Express 上建立中介軟體也是一件非常簡單的事。我們之後在深入開發時還會再用到它。


和你分享。


See also

文首圖片來源: 攝影師:SHVETS production: https://www.pexels.com/zh-tw/photo/7176317/

沒有留言:

張貼留言