簡體   English   中英

會話如何在express.js中工作

[英]How does session work in express.js

我來自php背景,因此在沒有任何框架的情況下,我只需要執行session_start()並在用戶登錄后執行session ['username'] ='sam',然后在每條路由中檢查session ['username']是否存在,否則將其重定向到登錄頁面。

但在Express中,我看到了很多類似Express-Session NPM的選擇

var session = require("express-session");
var sessionMiddleware = session({
    secret: "secret",
    resave: true,
    saveUninitialized: true,
    maxAge:365 * 24 * 60 * 60 * 1000
});

此npm還會生成cookie,為什么cookie進入此處? 如果您使用會話,為什么需要使用cookie? 我糊塗了。

HTTP是無狀態協議。 它本身無法識別用戶或會話。 那么大多數語言平台如何做到這一點? 他們為該用戶生成一個唯一的ID,並將其存儲在Cookie中。 他們使用唯一的ID來區分用戶會話,並將所有會話數據存儲在服務器端。

因此,在PHP中,當您執行session_start() ,它將生成一個名為PHPSESSID或類似名稱的cookie。 然后,PHP根據該密鑰將所有會話數據存儲在服務器上的文件或數據庫中。 每次用戶訪問不同的頁面時,PHP都會讀取該cookie的值並獲取ID。 根據該ID,PHP檢索會話數據並將其作為$_SESSION可用。

幾乎所有的Web框架,包括Express,都是一樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM