繁体   English   中英

Express JS-如何在会话中设置变量?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM