我們正在創建一個nodejs應用程序,我需要維護會話。我們使用express來維護節點變量。但問題是,每當我們打到一個新的服務時,一個新的會話正在創建。Nodejs爲每個請求創建會話
app.js文件看起來像這樣
var RedisStore = require('connect-redis')(session);
\t module.exports = function Sessions(url, secret) {
\t var store = new RedisStore({ url: url });
\t var session = session({
\t \t secret: 'dfsdfdff',
\t \t store: 'test',
\t \t resave: true,
\t \t saveUninitialized: true
\t });
\t return session;
\t };
var express = require('express');
var session = require('express-session');
var routes = require('./routes');
var http = require('http');
var https = require('https');
var path = require('path');
var Q = require('q');
var fs = require('fs');
var formidable = require("formidable");
var util = require('util');
var url = require('url');
var request = require('request');
var users = require('./routes/language');
var user_auth = require('./routes/auth');
auth.js文件看起來像這樣
exports.generateToken = function(req, res, next) {
res.render('index', {
page_title: 'PEN_V4'});
var sess = req.session;
sess.user_id = 'Hello1';
console.log('Hello 1============');
console.log(sess.user_id);
console.log('session*****************************============');
console.log(sess);
res.end();
}
exports.myToken = function(req, res, next) {
console.log(req.session);
console.log('session============');
console.log('session*****************************============');
res.end();
}
app.configure(function() {
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.static(__dirname + '/static'));
app.use(express.cookieParser());
app.use(express.session({
secret: 'alessios',
store: MemStore({
reapInterval: 60000 * 10
}),
\t \t \t cookie :{httpOnly: true}
}));
});
然後從index.html中調用api的myToken和generateToken。但是兩個apis都顯示不同的會話。有什麼可以指導我們關於我們在做什麼的錯誤?
請發表您如何初始化會話。也請張貼從快遞發送的標題。 – bolav
添加標題和初始化方法 –
如果我運行'curl -v http:// localhost:3000 /'我在標題中得到這個答案:'set-cookie:connect.sid = s%3AvrxyuLkQ8JHDS7O5kZ9vL9jU0TOPaGip.K3zFYVzopymsz5eXPMEN5pTlaKBHgZso3DJu3EidmW8;路徑= /; HttpOnly'。請發佈確認您的應用發送了set-cookie標頭。 – bolav