gpt4 book ai didi

node.js - express.js/sails.js 中的身份验证和 session

转载 作者:太空宇宙 更新时间:2023-11-03 22:54:01 24 4
gpt4 key购买 nike

一直在学习 sails 类型转换教程,但对类(class)的工作方式感到困惑。

在本教程中,用户在 session Controller 中通过以下方式标记为已通过身份验证:

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

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

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

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

<% if (session.authenticated) { %>

为什么不直接设置这个变量?

可能是一个愚蠢的问题,但我对逻辑如何工作感到困惑,并且在线文章/教程无法帮助我理解......

最佳答案

对于 Express 中间件(请记住,Sails 是基于 Express 构建的),将属性附加到 req 对象是常见的做法,以便可以在以后的中间件以及最终的 Controller 中访问它。幕后发生的事情是您的 req 对象附带一个包含 session ID 的 cookie,然后 session 中间件使用它从某个数据存储(默认情况下,在内存中)检索实际 session 数据使用store。 super 快速且易于开发,但不建议部署),然后将其附加到req对象。

关于 EJS 中 session.authenticated 的值,默认情况下 Sails 在 res.locals 中包含 req.session (可在 View 中访问) ),因此该值将是通过 Controller 存储在 session 中的任何值。

关于node.js - express.js/sails.js 中的身份验证和 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29932465/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com