session如何在express.js中工作

时间:2016-08-23 06:38:52

标签: javascript node.js session cookies

我来自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?我很困惑。

1 个答案:

答案 0 :(得分:2)

HTTP是无状态协议。它无法单独识别用户或会话。那么大多数语言平台如何做到这一点呢?它们为该用户生成唯一ID并将其存储在cookie中。并且它们将所有会话数据存储在服务器端,使用该唯一ID来区分用户会话。

所以在PHP中,当你session_start()时,它会生成一个名为PHPSESSID或类似的cookie。然后,PHP将所有会话数据存储在服务器上的文件或数据库中,与该密钥相对应。每次用户访问不同的页面时,PHP都会读取该cookie的值并获取ID。根据该ID,PHP检索会话数据并使其可用$_SESSION

几乎所有的Web框架都是如此,包括express。