处理和保存node.js/express会话

Deal and keep node.js/express sessions

本文关键字:express 会话 js node 保存 处理      更新时间:2023-09-26

我目前正在一个web应用程序上工作,这个web应用程序每次fs.mkdir被调用时,删除当前所有的express会话,所以我需要一种方法来保持所有这些会话。我试图保持所有这些会话与connect-mongodb和connect-redis,但都不工作,nodemon总是说,要求。会话未定义。我不知道我该怎么做才能保住整个疗程。

我需要一种方法来保存所有的会话,不要在fs.mkdir执行时丢失它们,以及一个教程,因为我还没有找到任何好的和完整的教程,任何人都可以!我正在阅读与此相关的所有内容,在Stackoverflow,但任何工作!请帮助!

这听起来很奇怪,在fs.mkdir之后你的会话被擦除。(我发现了你的另一个SO问题)

但回到问题,这里有一个小代码片段,你可以使用会话(redis)。

var express = require('express')
  , fs = require('fs')
  , http = require('http')
  , RedisStore = require('connect-redis')(express)
  , sessionStore = new RedisStore()
  , app = express()
  ;
app.configure(function(){
  app.set('port', 3000);
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(express.cookieParser('secret'));
  app.use(express.session({
    store: sessionStore
  }));
  app.use(express.static(__dirname + '/public'));
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.get( '/', function(req, res){
  res.setHeader("Content-Type", "text/html");
  console.log( req.session );
  console.log( '------------------------' );
  res.end( 'root' );
});
app.get( '/dir/:id', function(req, res){
  console.log( req.session );
  console.log( '------------------------' );
  fs.mkdir( req.params.id );
  if ( req.session.dirs === undefined )
    req.session.dirs = [];
  req.session.dirs.push( req.params.id );
  console.log( req.session );
  console.log( '------------------------' );
  res.setHeader("Content-Type", "text/html");
  res.end( 'dir' );
});

server = http.createServer(app).listen(3000);

你应该阅读express的文档,并浏览express的示例