node.js - Node js为每个请求创建不同的 session ID

标签 node.js session express-session

使用快速 session 并将 session 存储在文件中。但是,每个请求都会创建新的 session ID 并创建新文件。

这是我用来创建 session 的代码。

app.use(session({ secret: 'keyboard cat',
  resave: false,store: new FSStore(options),
  saveUninitialized: false , 
  cookie: { maxAge: 1000,secure: false,httpOnly: true }
}))

但是我希望它应该为每个用户创建一个 session ID 或直到 session 过期。

最佳答案

我的问题是 MaxAge,我将其设置为 1000 毫秒,即 1 秒。因此它每次都在创建一个新的 session ID。我已将其设置为 1 小时,效果很好。

完整代码如下

var express = require('express');
var app = express();
var session = require('express-session');
var FileStore = require('session-file-store')(session);

app.use(session({ secret: 'keyboard cat',
    resave: false,
    store: new FileStore,
    saveUninitialized: false ,
    cookie: { maxAge: 3600000,secure: false, httpOnly: true }
  })
);

app.get('/', function (req, res) {
  if (req.session.views) {
    req.session.views++;
    res.setHeader('Content-Type', 'text/html');
    res.write('<p>views: ' + req.session.views + '</p>');
    res.end();
  } else {
    req.session.views = 1;
    res.end('Welcome to the file session demo. Refresh page!');
  }
});

var server = app.listen(3000, function () {
  var host = server.address().address;
  var port = server.address().port;

  console.log('Example app listening at http://%s:%s', host, port);
});

关于node.js - Node js为每个请求创建不同的 session ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32378669/

相关文章:

node.js - 异步等待样式调用适用于 nano.db.insert 但不适用于 nano.db.list

javascript - nodejs方立方求值器抛出超出最大调用堆栈大小

node.js - typescript 表达 typeorm createconnection

javascript - mvc session 过期后,如何使整个页面重定向到登录?

node.js - NodeJS 请求重置 session

javascript - 在不使用 async/await 的情况下按顺序执行 promise 数组

javascript - 使用ajax将Jquery变量传递给php session 变量时出错

iOS Facebook SDK 4 session

javascript - Express session 内部回调返回未定义外部

javascript - 快速 session 不适用于 firebase 功能