我有一个节点 js 服务器,作为登录策略,我将护照与谷歌 OAuth 一起使用。这是我的代码
passport.use(new GoogleStrategy({
clientID: ...,
clientSecret: ...,
callbackURL: "http://localhost:3000/users/googleAuth/callback"
},
function(accessToken, refreshToken, profile, done) {
process.nextTick(function(){
UserDB.findOne({'google.id': profile.id}, function(err, user){
if(err)
return done(err);
if(user)
if(user.active)
return done(null, user);
else
return done("user was disabled");
else {
var newUser = new UserDB();
newUser.admin = false;
newUser.email = profile.emails[0].value;
newUser.google.id = profile.id;
newUser.google.token = accessToken;
newUser.google.name = profile.displayName;
newUser.google.email = profile.emails[0].value;
newUser.save(function(err){
if(err)
console.log(err);
else
return done(null, newUser);
});
console.log(profile);
}
});
});
}
));
这是回调
router.get('/googleAuth/callback',
passport.authenticate('google', {successRedirect:'/'}), function (req,res) {
if(!req.isAuthenticated())
res.redirect('/');
});
用户有一个活动属性,如果它设置为 false 用户无法登录(您可以在代码中看到这一点),当发生这种情况时,我想将用户重定向到带有错误消息的主页,我试图使用res.redirect('/')
,但是它没有用,用户只是堆叠在您选择谷歌用户的屏幕中,我也尝试添加 failureRedirect 属性但结果相同。如何重定向用户?是否也可以发送消息?