Node.js Passport.js google登录被中间件重定向
这就是谷歌的战略:Node.js Passport.js google登录被中间件重定向,node.js,passport.js,Node.js,Passport.js,这就是谷歌的战略: passport.use(new GoogleStrategy({ clientID: config.google_consumer_key, clientSecret: config.google_consumer_secret, callbackURL: config.google_callback, passReqToCallback: true }, function(req, accessToken, refreshToken
passport.use(new GoogleStrategy({
clientID: config.google_consumer_key,
clientSecret: config.google_consumer_secret,
callbackURL: config.google_callback,
passReqToCallback: true
},
function(req, accessToken, refreshToken, profile, done) {
User.findOrCreate({
email: profile.email,
username:`${profile.given_name} ${profile.family_name}`
}, function (err, user) {
user.connected = true;
user.save();
return done(err, user);
});
}
));
这就是中间件:
var isAuthenticated = function (req, res, next) {
if(!req.isAuthenticated())
return res.redirect(301,'/login');
next();
};
module.exports = isAuthenticated;
路线:
router.get('/google-signin',
passport.authenticate('google',
{ scope: [ 'email', 'profile' ] }
));
注销呢
logout = async function(req, res){
req.user.connected = false;
await req.user.save();
req.logout();
return res.redirect('/login');
}
我第一次登录时没有问题,但是,如果我注销并尝试再次登录,我将被重定向到/
。我看不出有什么问题
我已经在中间件中设置了一个断点,并且第一次(当它工作时)中间件已执行,但是,当我注销并尝试再次登录中间件时,它未执行您可以显示您的代码如何注销吗?是的,它添加在问题“您在哪里使用中间件?”中。
/login
使用isAuthenticated
中间件