Authentication.js / sails.js中的authentication和会话

一直在通过帆演员教程工作,我很困惑会议的工作方式。

在本教程中,用户在会话控制器中被标记为已validation:

req.session.authenticated = true; req.session.User = user; res.redirect('/'); 

为什么会话被保存在请求中? 我的理解是,express.js中的'req'对象是浏览器发送给服务器的信息。

服务器不应该在其他地方保存这些信息(当另一个请求时请求对象不会被删除吗?)

此外,当使用ejs模板化页面时,应用程序以某种方式从另一个对象会话中检索身份validation状态:

 <% if (session.authenticated) { %> 

为什么不直接设置这个variables?

可能是一个愚蠢的问题,但我很困惑的逻辑如何工作和在线文章/教程不帮助我理解…

expression中间件(记住,Sails是build立在快车上的)是常见的做法,将属性附加到req对象上,以便在后来的中间件和最终你的控制器中访问。 在幕后发生的事情是你的req对象带有一个包含会话ID的cookie,然后会话中间件使用它来从某个数据存储检索实际的会话数据(默认情况下,使用内存存储。易于开发,但不推荐部署),然后将其附加到req对象。

关于在EJS中session.authenticated的值,默认情况下,Sails包含req.session中的res.locals (在视图中可访问),所以值将是通过控制器存储在会话中的值。

浏览器发送存储在cookie上的会话ID。 会话对象由存储在服务器端的会话ID引用。 会话附加到请求(为了方便,我想)。 你可以在这里阅读更多https://github.com/expressjs/session#compatible-session-stores

我不知道什么是设置session.authenticated没有看到更多的代码。