如何在Node.js中为OAuth回调配置路由

时间:2018-11-02 14:04:16

标签: javascript node.js passport.js

server.js中可以很好地工作:

app.get('/auth/google/callback',
    passport.authenticate('google', {
        failureRedirect: '/login'
    }),
    (req, res) => {}
);

但是在route.js中使用以下代码时不会:

exports.googleCallback = function(req, res, next) {
  passport.authenticate('google', { failureRedirect: '/login' });
  const handler = function(req, res) {
    // Successful authentication, redirect home.
    res.redirect('/');
  };
  handler(req, res, next);
};

我在route.js中具有以下内容:

app.route(path + 'auth/google').get(auth.googleLogin);

会发生什么: 第二个代码直接进入/路径,而无需等待Passport Google策略完全执行。

如果我移除了res.redirect('/');,它不会随处可见并继续加载。

1 个答案:

答案 0 :(得分:0)

这很好用:

exports.googleCallback = function(req, res, next) {
  passport.authenticate('google', { failureRedirect: '/login' })(req, res, next);
};

在护照上添加了回调方法。