Подтвердить что ты не робот

Nodejs + Passport.js + Redis: как хранить сеансы в Redis

Я прочитал эту тему Node.js + express.js + passport.js: оставаться аутентифицированным между перезагрузкой сервера, и мне нужно точно то же самое, но для Редиса. Я использовал такой код:

var RedisStore = require('connect-redis')(express);
app.use(express.session({
    secret: "my secret",
    store: new RedisStore,
        cookie: { secure: true, maxAge:86400000 }
}));

И это не работает. Для подключения Redis я использую модуль connect-redis. Что я делаю неправильно? Спасибо!

UPD. У меня нет ошибок. Чтобы обеспечить успешные процессы аутентификации, я добавил строку журнала и выполняю.

function(email, password, done) {
    // asynchronous verification, for effect...
    process.nextTick(function() {
        findByEmail(email, function(err, user) {
            if (!user) {
                return done(null, false, {
                    message: 'Unknown user ' + email
                });
            }
            if (user.password != password) {
                return done(null, false, {
                    message: 'Invalid password'
                });
            }
            //just logging that eveything seems fine
            console.log("STATUS: User " + email + " authentificated succesfully");
            return done(null, user);
        })
    });
}));

Лог с поддержкой express.logger() был:

127.0.0.1 - - [Fri, 19 Oct 2012 05:49:09 GMT] "GET /ico/favicon.ico HTTP/1.1" 404 - "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4"
STATUS: User admin authentificated succesfully

I do предположим, что нет ничего плохого в самом деле auth/users/credentials/serializing/deserializing. Проблема в том, что паспорт не может установить cookie для Redis и прочитать его.

4b9b3361

Ответ 1

Я должен использовать

cookie: { secure: false, maxAge:86400000 }

Ответ 2

Что произойдет, если вы установите хранилище явно? то есть что-то подобное в вашем приложении:

var redis = require('redis');
// This is host and port-dependent, obviously
var redisClient= redis.createClient(6379, 'localhost');

app.use(express.session({
    secret: 'your secret',
    /* set up your cookie how you want */
    cookie: { maxAge: ... },
    store: new (require('express-sessions'))({
        storage: 'redis',
        instance: redisClient
    })
}));