【问题标题】:How to keep value of req.session in express-session如何在快速会话中保持 req.session 的值
【发布时间】:2018-03-27 15:16:42
【问题描述】:

我有以下代码:

var session = require('express-session');
var sessionConfig = {
   secret: 'somesecretkey', 
   cookie: {secure: false}, 
   resave: false, 
   saveUninitialized: false, 
   store: new mongostore({ mongooseConnection: mongoose.connection })
}

router.get('/', function(req, res, next) {

  var abc = req.session.user;
  var trueOrFalse = isset(abc);

  console.log(trueOrFalse);
  req.session.user = 1;
  req.session.save();
});

function isset(var1){
  if( typeof var1 !== 'undefined' ) {
     return true;
}
  return false;
}

我的期望响应是第一次打印'false',然后在我刷新页面后,它会在接下来的时间里总是打印​​'true'。但是,它总是打印“假”,因为它没有保留该值。

请帮忙。

【问题讨论】:

  • 如果在第一次加载和后续加载这两种情况下输出req.session.user,你会在控制台中得到什么?
  • @MohitBhardwaj 无论我重新加载页面多少次,我总是得到未定义的 req.session.user 值。
  • 您确定您的mongoose.connection 工作正常吗?你能检查一下你连接的数据库中有一个sessions 集合吗?
  • @MohitBhardwaj 是的,我确定 mongoose.connection 没问题。这里的问题是每当我重新加载页面时,我创建的会话都会重置。

标签: javascript session express express-session


【解决方案1】:

我不确定,但您似乎没有将会话添加为中间件,以便所有传入请求都通过它。您可能可以这样做(在您的主文件中通常是app.js):

var session = require('express-session');
app.use(session({
   secret: 'somesecretkey', 
   cookie: {secure: false}, 
   resave: false, 
   saveUninitialized: false, 
   store: new mongostore({ mongooseConnection: mongoose.connection })
}));

// Now here come your route handlers
app.use("/", routes);

【讨论】:

    猜你喜欢
    • 2016-05-06
    • 2021-10-12
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    • 2012-11-05
    相关资源
    最近更新 更多