[英]Express js - How to set variable in session?
我有一个登录表单,询问用户,用户名,密码和公司名称。 公司名称是数据库名称,因此在登录后请求中,我必须在会话中设置数据库名称。
我认为更好的选择是在session
,对吗? 不在req.locals
。
例如,我尝试使用req.locals
进行设置,但不起作用:
app.js
// Global Vars
app.use(function (req, res, next) {
res.locals.success_msg = req.flash('success_msg');
res.locals.error_msg = req.flash('error_msg');
res.locals.error = req.flash('error');
res.locals.user = req.user || null;
res.locals.database = req.database || null;
next();
});
// Express Session
app.use(session({
secret: 'secret',
saveUninitialized: true,
resave: true
}));
在/login
发布路线中,我尝试设置如下:
req.locals.database = 'db_xpto';
鉴于我试图显示变量,但什么也不显示:
h4 Using database: #{database}
局部变量或会话是哪种更好的解决方案? 我该如何设置呢?
注意:登录时,我使用的是passport
。
IMO,使用会话是一种更好的方法,因为它由会话中间件自动处理。 此外, res.locals
不适用于该会话,而仅适用于该请求。 您可以修改代码以直接在路由中使用会话,而不必使用显式定义的中间件。
res.session.success_msg = req.flash('success_msg');
res.session.error_msg = req.flash('error_msg');
res.session.error = req.flash('error');
res.session.user = req.user || null;
res.session.database = req.database || null;
您也可以在登录路径中以相同的方式执行此操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.