我们正在创建一个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