一直在研究帆船演员教程,并对会议的工作方式感到困惑。
在本教程中,用户在会话控制器中被标记为已通过身份验证:
group by
为什么会话被保存在请求中?!我的理解是,' req' express.js中的对象是浏览器发送给服务器的信息。
服务器是否应该将此信息保存在别处(当另一个请求时,请求对象被删除?)
此外,在使用ejs模板化页面时,应用程序以某种方式从另一个对象会话中检索身份验证状态:
select disease.name, count(diagnosed.diseaseid) as timesdiagnosed
from disease
left join diagnosed on disease.diseaseid = diagnosed.diseaseid
group by disease.name
having count(diagnosed.diseaseid) <= 2
order by disease.name
为什么不直接设置此变量?
可能是一个愚蠢的问题,但我对逻辑如何运作感到困惑,在线文章/教程并没有帮助我理解......
答案 0 :(得分:2)
浏览器发送存储在cookie上的会话ID。会话对象由存储在服务器端的会话ID引用。会话附在请求上(为方便起见,我想)。您可以在此处阅读更多内容https://github.com/expressjs/session#compatible-session-stores
我不知道在没有看到更多代码的情况下设置session.authenticated
是什么。
答案 1 :(得分:2)
快速中间件(请记住,Sails是基于快速构建的)通常会将属性附加到req
对象,因此可以在以后的中间件中访问它,最终可以访问控制器。幕后发生的事情是你的req
对象带有一个包含会话ID的cookie,然后会话中间件使用它来从一些数据存储中检索实际的会话数据(默认情况下,使用内存存储) 。超级快速且易于开发,但不建议部署),然后将其附加到req
对象。
关于EJS中session.authenticated
的值,默认情况下,Sails包含req.session
中的res.locals
(可在视图中访问),因此该值将是通过您的会话中存储的内容控制器。