我来自php背景,所以没有任何框架,我只需要做session_start(),用户登录后我会做session ['username'] ='sam',在每一条路线中我都会检查session ['username']是否存在,否则将其重定向到登录页面。
但是在快递中我看到很多选项,比如快递会话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?我很困惑。
答案 0 :(得分:2)
HTTP是无状态协议。它无法单独识别用户或会话。那么大多数语言平台如何做到这一点呢?它们为该用户生成唯一ID并将其存储在cookie中。并且它们将所有会话数据存储在服务器端,使用该唯一ID来区分用户会话。
所以在PHP中,当你session_start()
时,它会生成一个名为PHPSESSID
或类似的cookie。然后,PHP将所有会话数据存储在服务器上的文件或数据库中,与该密钥相对应。每次用户访问不同的页面时,PHP都会读取该cookie的值并获取ID。根据该ID,PHP检索会话数据并使其可用$_SESSION
。
几乎所有的Web框架都是如此,包括express。