2

访问的用户http://localhost/login会立即重定向到 Facebook,以确认应用程序的使用情况。一旦获得授权,Facebookhttp://localhost/login?code=将使用一个特殊代码联系,该代码允许服务器获取用户的信息,例如他们的姓名和性别。

Express().get('/login', Passport().authenticate('facebook', {
    failureRedirect: 'http://localhost/',
}), function(req, res) {
    database.saveData(req.user, **randomlyGeneratedHash**);
    res.cookie('session', **randomlyGeneratedHash**);
    res.end();
});

这按预期工作,但是当经过身份验证的用户/login连续访问时,整个过程会重复,他们会得到一个新的 cookie。

有没有一种方法可以在 Express 和 Passport 之间运行一些代码,如果用户已经拥有有效的 cookie,则可以阻止 Passport 重定向到 Facebook?

4

1 回答 1

1

ensureAuthenticated您可以在/login路线上使用类似的东西:

var CheckIfAlreadyLoggedIn = function(req, res, next) {
  if (req.isAuthenticated()) {
    return res.redirect('/'); // or where you want them to go
  }
  next();
};

Express().get('/login', CheckIfAlreadyLoggedIn, Passport().authenticate('facebook', ...));

这会将已经登录的用户重定向回/他们尝试访问/login.

于 2013-12-16T07:31:20.097 回答