2

訪問したユーザーhttp://localhost/loginは、アプリケーションの使用状況を確認するために即座に Facebook にリダイレクトされます。http://localhost/login?code=承認されると、Facebook はサーバーが名前や性別などのユーザー情報を取得できるようにする特別なコードを使用して連絡します。

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 に答える