从未在PassportJS中使用Google Strategy调用deserializeUser函数

时间:2018-10-14 19:37:56

标签: node.js express passport.js

我正在尝试使用PassportJS设置google auth,但是从未调用过我的deserializeUser函数。

这是我的password.js配置:

...
passport.serializeUser(function(user, done) {

        done(null, user.id);

    });

    passport.deserializeUser(function(sessionUser, done) {

      User.findById(sessionUser, function(err, user) {
             done(err, user);
         });
  });

passport.use('google', new GoogleStrategy({
        clientID        : process.env.GOOGLE_CLIENTID,
        clientSecret    : process.env.GOOGLE_CLIENTSECRET,
        callbackURL     : process.env.GOOGLE_CALLBACKURL,
        passReqToCallback: true,
    },
        function(req, token, refreshToken, profile, done) {


            process.nextTick(function() {

                // console.log(profile);

                var values = { 
                    where: { google_id: profile.id }, 
                    defaults: {google_id: profile.id, name: profile.displayName} 
                };

                User.findOrCreate(values)
                .spread(function(user, created) {
                    return done(null,user);
                });
            });
        }
    ));

这是我的路线:

app.get('/auth/google', 
    passport.authenticate('google', { scope : ['profile', 'email'] }));


// the callback after google has authenticated the user
app.get('/auth/google/callback',
        passport.authenticate('google', {
                successRedirect : '/portfolio/crypto',
                failureRedirect : '/'
        }));

并且由于从不调用deserializeUser,因此从未定义req.user。我该如何解决?

0 个答案:

没有答案