不使用会话时,req.user对象不会在重定向上持续存在

时间:2019-04-18 18:40:31

标签: express passport.js middleware

我正在使用没有会话的护照google-oauth-20

我有一个回调函数,如果用户不存在,该函数将创建一个用户并返回配置文件。然后,我有了一个中间件,用于检查用户是否是全新用户,以便将其重定向到/onboarding路由,如果用户已经在数据库中,则将其重定向到/feed

这是逻辑:

passport.use(new GoogleStrategy({
    clientID: process.env.GOOGLE_CLIENT_ID,
    clientSecret: process.env.GOOGLE_SECRET,
    callbackURL: process.env.GOOGLE_CALLBACK,
    },
    strategyCallback
));


const authenticate = passport.authenticate('google', {
    scope: ['profile', 'email']
});

const authenticateCallback = passport.authenticate('google', {
    session: false
});

const redirectUser = (req, res) => {
    if (req.user.isNewRecord) {
        res.redirect(302, '/onboarding')
    } else {
        console.log(req.user)
        res.redirect(302, '/feed')
    }
}

在我的路线上,我有以下东西:

app.get('/auth/google', controllers.googleAuth.authenticate);
app.get('/auth/google/callback',
    controllers.googleAuth.authenticateCallback,
    controllers.googleAuth.redirectUser    
);

app.get('/feed', (req, res) => {
    console.log(req.user) // <---- UNDEFINED
    res.send('welcome back!')
});

req.user对象在重定向中丢失,它不会持久存在。有没有办法将用户对象抢回来?

0 个答案:

没有答案