2015-09-03 63 views
3

使用快速会话并将会话存储在文件中。但是,它创建新会话标识和新文件的每个请求都已创建。节点js为每个请求创建不同的会话ID

这是我用来创建会话的代码。

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

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

+0

你得到这个答案?我也有同样的问题...... – timpham

+1

@Flash可能是因为maxAge是1000(1s),您将获得每个请求的新会话ID。 – actor203

+1

我面临同样的问题,但我的maxAge是24小时,并且它仍然为每个请求创建一个新的sessionID –

回答

1

我的问题是MaxAge,我把它设置为1000毫秒,即1秒。因此,它每次都创建一个新的会话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); 
}); 
相关问题