Я (почти) успешно использую Node.js с Express и Redis для обработки сессий.
У меня проблема в том, что сеанс не сохраняется, когда я использую res.redirect()
.
Вот как я могу это увидеть:
req.session.username = username.toString();
console.log(req.session);
res.redirect('/home');
console.log () печатает:
{ lastAccess: 1322579131762,
cookie:
{ path: '/',
httpOnly: true,
_expires: Tue, 29 Nov 2011 15:06:31 GMT,
originalMaxAge: 60000 },
username: 'admin' }
Теперь вот следующий код:
app.get('/home', [app.requireLogin], function(req, res, next) {
// Not showing the rest as it's not even getting there
// Instead, here is what's interesting
app.requireLogin = function(req, res, next) {
console.log(req.session);
Этот console.log () распечатывает это:
{ lastAccess: 1322579131775,
cookie:
{ path: '/',
httpOnly: true,
_expires: Tue, 29 Nov 2011 15:06:31 GMT,
originalMaxAge: 60000 } }
Очевидно, что объект 'username' исчез. Сеанс не сохранил его, а просто перестроил новый.
Как я могу решить это? Не стесняйтесь, если вам нужна какая-либо информация.
Вот код, где я устанавливаю управление сеансом:
app.configure(function() {
// Defines the view folder and engine used.
this.set('views', path.join(__dirname, 'views'));
this.set('view engine', 'ejs');
// Allow parsing form data
this.use(express.bodyParser());
// Allow parsing cookies from request headers
this.use(express.cookieParser());
// Session management
this.use(express.session({
// Private crypting key
secret: 'keyboard cat',
store: new RedisStore,
cookie: {
maxAge: 60000
}
}));
this.use(app.router);
});
Вот весь проект (я имею в виду его части), в сущности: https://gist.github.com/c8ed0f2cc858942c4c3b (игнорировать свойства визуализированных представлений)