node.js - 如何在 expressjs 中将 session 数据存储在文件中?

标签 node.js session express

当用户登录时,我像这样在 session 中存储数据:

   req.session.user = userData;

它工作正常,但是当我在 nodejs 中重新启动时, session 为空。然后用户需要重新登录。

我想为 session 创建一个基于文件的存储。但经过大量搜索,我找到了将数据存储在数据库中的方法,但我不想将 session 数据存储在数据库中。我想将数据存储在文件中。

是否有一个 nodejs 模块将 session 数据存储在文件中?

最佳答案

您可以使用session-file-store。可以引用下面的工作示例。

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,
    saveUninitialized: false,
    store: new FileStore,
    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 - 如何在 expressjs 中将 session 数据存储在文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22812928/

相关文章:

node.js - Node PDFKit 管道到多个目标

node.js - 快速路由器旁路

javascript - 如何启用调试 express.js/node.js 应用程序

javascript - 暂停函数以监听请求

javascript - 尝试使用 MeteorJS 和 twit Node 模块,错误 : [TypeError: Object #<Object> has no method 'request' ]

javascript - SailsJS : Requiring Assets, 例如 sails.io.js

java - 有没有什么方法可以在 servlet 中获取 jetty 上的所有有效 session key 值?

javascript - 尝试阻止用户在注销后返回上一页不起作用

iphone - iOS 中的应用程序 session ?

node.js - 使用 express 和 graphql 查询 mongodb