node.js - 在passportJS中从未使用Google Strategy调用deserializeUser函数
问题描述
我正在尝试使用 PassportJS 设置 google auth,但从未调用过我的 deserializeUser 函数。
这是我的 passport.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。我怎样才能解决这个问题?
解决方案
推荐阅读
- go - 在传递指向切片的指针时出现意外行为
- javascript - 反应 - zIndex 不起作用
- java - 如何修复错误:在 Windows 8.1 版本的“(null)”中找不到所需版本的 Java(TM) 2 运行时环境
- laravel - Laravel 验证器问题
- sql - 视图和查询有什么区别?
- lua - 验证给定日期是昨天的日期
- python - 用原始图像尺寸误差馈送张量流
- swift - 线程 1 致命错误可选值 Swift
- azure-blob-storage - Azure IOT Hub 到 JavaScript 代码?
- compression - gzip如何找不到两个相同的部分?