Nic*_*olk 17 javascript session node.js express
我是学习Node和Express的新手,我仍然试图用快速包围代码流.假设我们在session.js中有这样的代码:
app.post('/session', notLoggedIn, function(req, res) {
User.findOne({
username: req.body.username,
password: req.body.password
}, function (err, user) {
if (err) {
return next(err);
}
if (user) {
req.session.user = user;
res.redirect('/users');
} else {
res.redirect('/session/new');
}
});
});
Run Code Online (Sandbox Code Playgroud)
假设User是必需的mongo架构.我发现奇怪的是session.user赋值:
req.session.user = user;
Run Code Online (Sandbox Code Playgroud)
由于req变量在重定向后将超出范围,但我们显然是这样做是为了持久保存用户数据,我只想弄清楚以下哪个场景描述了正在发生的事情.(A)被分配给req参数的参数(当调用回调时)被存储/仍在堆栈中的某个地方,(B)会话存储在堆栈上并被分配给新的req对象之前传入回调,或(C)与B相同,但在用户字段上(似乎不太可能,也许我可能做作).
jfr*_*d00 13
存在一个整体会话数据结构,它存储所有会话信息(如全局,但它也可以在数据库中 - 只是在连接中持久存在的东西).每个客户端的会话数据使用一个唯一密钥索引到会话存储中以获取该客户端的会话数据.
为给定浏览器客户端建立会话的一部分是创建一个唯一的客户端密钥(通常存储在cookie中),该密钥成为全局会话对象的索引.
在传入的http请求中,支持会话的Express中间件检查特定的客户端cookie,如果在http请求中找到该特定的cookie并且在全局会话对象/数据库中找到,则它将该会话的存储信息添加到请求对象用于以后使用的http请求处理程序.
所以,这是一个典型的序列:
归档时间: |
|
查看次数: |
10144 次 |
最近记录: |