在MeanJS
中,在用户登录并刷新页面后,core.server.controller.js
会将用户凭据发送到index.html
exports.renderIndex = function (req, res) {
res.render('modules/core/server/views/index', {
user: req.user || null
});
};
问题1:为什么服务器知道谁是登录用户?即使我们关闭了浏览器并重新打开它。
问题2
让我们调用上述应用的域名是localhost:8000。
我有一个单独的网站,只有前端代码(angular
)没有后端。
我们称之为localhost:3000。我可以从localhost:8000调用API并显示数据。
我也可以通过调用localhost:8000 / api / auth / signin API登录,但是在我刷新它之后,它不认识我为signedin用户,因为我没有服务器像indexhost:3000那样为index.html提供服务。
使localhost:8000登录的任何技巧都有效吗?
答案 0 :(得分:1)
关于问题1 ,这是因为express-session
的配置方式而发生的。如果您关闭浏览器,cookie会话将保持不变,除非您更改config/env/default.js
中定义的选项,即:
// Session Cookie settings
sessionCookie: {
// session expiration is set by default to 24 hours
maxAge: 24 * (60 * 60 * 1000),
// httpOnly flag makes sure the cookie is only accessed
// through the HTTP protocol and not JS/browser
httpOnly: true,
// secure cookie should be turned to true to provide additional
// layer of security so that the cookie is set only when working
// in HTTPS mode.
secure: false
},
根据express-session
this,您可以使用expire
和maxAge
来控制该行为。如果maxAge
和expire
都未设置,则大多数客户端会将此视为“非持久性Cookie”,并会在退出Web浏览器应用程序的情况下将其删除。在MEAN.js中设置了maxAge
,即使浏览器已关闭,这也是用户保持登录的原因。但是,24小时后用户将需要再次登录。
关于问题2 ,我从未尝试过类似的内容,但我认为答案可能在domain
,path
和sameSite
express-session
属性中1}} docs。看一看根据您的需求是否有效。