На сегодняшний день я использую память MemoryStore по умолчанию для своих экспресс-сессий. Все работает отлично, за исключением того, что все сеансовые данные теряются между перезапусками. Поэтому я стараюсь, чтобы мои сеансы работали с Redis & Connect-Redis.Экспресс + Паспорт + Повторные сеансы?
Вот часть моего кода, который касается сеанса конфигурации с Redis:
var express = require("express"),
app = module.exports = express(),
passport = require("./passport"),
http = require("http"),
RedisStore = require("connect-redis")(express),
redis = require("redis").createClient();
app.configure(function(){
app.set("passport", passport);
app.use(express.cookieParser());
app.use(express.session({
secret: "I can haz working sessions?",
store: new RedisStore({ client: redis })
}));
app.use(passport.initialize());
app.use(passport.session());
...
Когда я запускаю это приложение, нет никаких ошибок. Однако, когда я пытаюсь войти в систему, хотя он выполняет первоначальный вход, я просто возвращаюсь обратно на экран входа в систему. Как будто паспорт не может установить cookie или не может прочитать cookie после его установки.
Для справки, вот функции, которые я использую в паспорте для сериализации/десериализации сессии:
passport.serializeUser(function(user, done) {
done(null, {
id : user.id,
type : user.type,
firstname: user.firstname,
lastname: user.lastname
});
});
passport.deserializeUser(function(user, done) {
done(null, user);
});
Любые советы о том, где я неправильно? Необходимо ли модифицировать паспорт serializeUser/deserializeUser для работы с redis? Или я пропустил что-то еще?
Спасибо (заблаговременно) за вашу помощь.
Проверьте средства разработки вашего браузера и убедитесь, что cookie действительно установлен (а также отправлен сервером обратно на сервер). Ваш код выглядит нормально. – robertklep
Похоже на то же самое, что у меня есть с сеансами cookie: http://stackoverflow.com/questions/19011531/using-cookiesession-with-passport –
@ user1031947: Могли ли вы решить вашу проблему? Пожалуйста обновите. – moaglee