Nodejs + Паспорт.JS + Redis: как хранить сеансы в Redis
Я читал эту тему узел.Яш + экспресс.Яш + паспорт.js: оставайтесь аутентифицированными между перезапуском сервера и мне нужно то же самое, но для Redis. Я использовал такой код:
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: Я не получаю никаких ошибок. Чтобы обеспечить аутентификацию процессов успешно, я добавил log-line, и он выполняется.
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);
})
});
}));
журнал с экспресс.регистратор() включен был:
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
Я do предположим, что нет ничего плохого в auth / users/credentials / сериализации / десериализации. Проблема в том, что passport не может установить cookie на Redis и прочитать его.
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
})
}));