【问题标题】:node.js - Can't figure out how to sabe sessions with session-expressnode.js - 无法弄清楚如何使用 session-express 保存会话
【发布时间】:2015-12-20 08:29:43
【问题描述】:

我是 node.js 和会话的新手,我试图在 node.js 会话中存储一些值,但每次我重新加载页面并检查 console.log 会话都没有保存。我的代码:

var session;
var org;

function checkSession(argument){
  var sess = argument;
  if(sess.org){
    return null;
  }
  else{
    return sess.org;
  }
}
/* GET home page. */
router.get('/', function(req, res, next) {
  session = req.session;
  var sessionChecked = checkSession(session);
  if(sessionChecked){
    org = sessionChecked;
  }
  else{
    org = req.query.org || 'Google';
    session.org = org;
    session.save();
  }

所以基本上我想要的是,当用户第一次加载页面时,他可以输入一个组织,当他这样做时,这个组织被保存在会话中,所以当他重新加载页面时,组织已被选中。

我知道我一定是在做一些非常错误的事情和/或糟糕的编码,但我就是想不通。

谢谢!

【问题讨论】:

    标签: javascript node.js session express express-session


    【解决方案1】:

    看起来调用session.save() 并没有达到您的预期。除非路由完全处理,否则 Express 不会写入会话。您可能需要在 get 函数结束时调用 res.end()

    查看https://github.com/expressjs/session#reqsession 并尝试理解该示例中的每一行代码。

    祝你好运!

    【讨论】:

    • 感谢您的回复,但似乎我不能这样做,因为我已经在渲染正文,所以我收到此错误“发送后无法设置标题”。这个演示代码似乎使用与我相同的逻辑,所以我不知道我做错了什么
    • 我没有从您发布的代码示例中看到这一点。也许尝试完全删除对save() 的调用,因为Express 将自动保存会话数据如果路由完成。您也有可能在设置会话信息之前返回正文,但我在您的代码中没有看到。
    • 谢谢!所以这是我的 index.js:pastebin.com/uqSKV1Ms 这是我的 app.js:pastebin.com/bhqTm96L
    【解决方案2】:

    事实证明,问题在于我的会话将在 20 秒后到期。傻我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-03
      • 2014-12-18
      • 1970-01-01
      • 2018-06-30
      相关资源
      最近更新 更多