2017-01-26 8 views
0

私はpassport/SQLを使って基本的なユーザー認証アプリケーションを構築しています。パスポートでモデルをシリアル化して次の要求に渡す際に問題があるようです。保存後にモデルがシリアライズされない

私のサインアップフォームに投稿し、ユーザーを保存して(SQLでチェックされ、確認済みの行にデータが挿入された)、モデルをパスポートに渡してシリアル化し、次のページで使用します。

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()方法を必要とまあ

ので、変更してみてください私はまだ `user.id`を使用して、正しい整数を返すことができたので、それは奇妙だ

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

:あなたのserializeUser()のようなものに。しかし、他の属性はアクセスできないように見えました。 – Jeff

関連する問題