2015-08-05 3 views
0

В течение долгого времени Googled, на самом деле не нашел ничего, что сработало до сих пор, так что я решил спросить здесь.Паспорт, кажется, забыл сеанс пользователя

Я пытаюсь получить сеансы для работы с паспортом. Я завершил регистрацию и функцию входа в систему, и это, похоже, работает так, как должно.

Основная проблема заключается в том, что req.isAuthenticated всегда возвращает false. я пробовал обычные вещи:

Убедился app.use (passport.session()) приходит после настройки экспресс-сессии:

... 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 

app.use(session({ 
secret: 'somethingsomethingdarkside', 
cookie: { maxAge: 1209600000 }, 
saveUninitialized: false, 
resave: false, 
// using store session on MongoDB using express-session + connect 
store: new MongoStore({ 
    url: configDB.url, 
    collection: 'sessions' 
    }) 
})); 

app.use(passport.initialize()); 
app.use(passport.session()); // persistent login sessions 
... 

Я пошел в паспортах request.js файл и сделал некоторые отладки, и я могу видеть, что

this[property/*user*/] = user; 

устанавливает значения, я хочу его, и что я думаю, что это должно быть.

Теперь, когда я называю

if (req.isAuthenticated()) 

это приводит к

this[property/*user*/] == undefined 

возвращение ложным. Я также добавил сообщение журнала, сообщающее мне, когда модуль инициализируется, и он делает это только один раз, когда начинается сервер.

Насколько я могу судить, user.deserializeUser так и не называется.

Вид на мой ум заканчивается здесь, любой, кто может мне помочь?

+1

Проверьте u значение 'req.user'? – Haywire

+0

Также как вы определяете «MongoStore»? – Haywire

+0

MongoStore в порядке. Я вижу, что он добавляет новый сеанс каждый раз, когда я вхожу в систему (как и каждый раз, когда я выхожу из системы, не знаю почему.). req.user, по-видимому, не определен, и поначалу это было по уважительной причине (потому что я использовал sessionStorage как идиот, не понимая, что это хранилище для ключей). Теперь, однако, это происходит через req.body.user. Как мне переместить его на req.user? Я добавляю его так же, как и с регистрацией и регистрацией, но, я полагаю, есть некоторое промежуточное ПО Passport, которое сбрасывает некоторые параметры. – Ceteareth

ответ

0

Я был здесь два или три вида глупостей, но, наконец, после многих часов позднего ночного кодирования (вероятно, основного корня проблемы) мне удалось его решить.

@haywire Направил меня на req.user, который я увидел, прошел через пробел, после чего я обязательно отправил его правильно.

Тогда это не сработает, потому что я попытался использовать функцию промежуточного программного обеспечения маршрута, которая должна была проверить, вошел ли пользователь в систему, прежде чем я определил его.

Кофе - это адский наркотик.

Смежные вопросы