【发布时间】:2016-05-21 10:10:37
【问题描述】:
我们正在创建一个需要维护会话的 nodejs 应用程序。我们使用 express 来维护节点变量。但问题是每当我们使用新服务时,都会创建一个新会话。
app.js 文件如下所示
var RedisStore = require('connect-redis')(session);
module.exports = function Sessions(url, secret) {
var store = new RedisStore({ url: url });
var session = session({
secret: 'dfsdfdff',
store: 'test',
resave: true,
saveUninitialized: true
});
return session;
};
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
}),
cookie :{httpOnly: true}
}));
});
然后从 index.html 我们调用 api 的 myToken 和 generateToken。但是两个 api 都显示了不同的会话。任何人都可以指导我们一些关于我们做错了什么吗?
【问题讨论】:
-
请发布您如何初始化会话。也请张贴从快递发送的标题。
-
添加了headers和初始化方法
-
如果我运行
curl -v http://localhost:3000/,我会在标题中得到这个答案:set-cookie: connect.sid=s%3AvrxyuLkQ8JHDS7O5kZ9vL9jU0TOPaGip.K3zFYVzopymsz5eXPMEN5pTlaKBHgZso3DJu3EidmW8; Path=/; HttpOnly。请确认 set-cookie 标头是从您的应用发送的。
标签: javascript node.js session