2017-01-26 17 views
0

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

После отправки в мою регистрационную форму и успешного сохранения пользователя (проверено в SQL и подтвержденная строка была вставлена ​​с данными), я хочу передать модель в Passport для сериализации и использования на следующей странице.

passport.use('local-signup', new LocalStrategy({ 
    usernameField : 'email', 
    passwordField : 'password', 
    passReqToCallback : true 
    }, 
    function(req, email, password, done) { 
    process.nextTick(function() { 
     new User({ 
     localEmail: email, 
     localPassword: User.generateHash(password) 
     }).save().then(function(model) { 
     return done(null, model); 
     }); 
    }); 
    })); 

Он получает здесь, где он должен быть сериализации, но я бегу в ошибку Error: failed to serialize user into session. Теперь это не делает много смысла, так как в теории, я прошел в недавно сохраненный пользователем внутри сохранить обещание с return done(null, model);

passport.serializeUser(function(user, done) { 
    done(null, user.localEmail); 
    }); 

    passport.deserializeUser(function(email, done) { 
    new User({localEmail: email}).fetch().then(function(user) { 
     done(null, user); 
    }); 
    }); 

Я пропускаю что-то очевидное? Любая помощь будет оценена, спасибо!

ответ

0

атрибуты модели книжной полки в не разоблачены как атрибуты простого объекта, они требуют метода get() быть достигнут (ожидание в течение дней, которые мы будем иметь надлежащие аксессор там ...)

Ну, так попробуйте изменить ваш serializeUser() к чему-то вроде:

passport.serializeUser(function(user, done) { 
    done(null, user.get('localEmail')); 
}); 
+1

Это странно, потому что я все еще был в состоянии использовать 'user.id' и возвращает правильное число. Однако другие атрибуты были недоступны. – Jeff