1

Node.js と Express を使用して、ログインしていないユーザーを常にメイン ページにリダイレクトさせたい。これを達成する最も簡単な方法は何ですか?理想的には、誰かがログインしているかどうかをチェックするコードをすべてのルートに追加する必要はありません。

4

3 に答える 3

2

「ログインしていない」をどのように定義するかにもよりますが、状態が に格納されているとしますreq.session。その場合、ログインしていないユーザーをログイン ページにリダイレクトするミドルウェアを追加できます。

app.use(function(req, res, next) {
  if (req.path === '/loginpage') // pass requests for login page
    next();
  else
  if (! req.session || req.session.isLoggedIn !== true) // check logged in status
    res.redirect('/loginpage'); // redirect to login page when not logged in
  else
    next(); // else just pass the request along
});

app.get('/loginpage', function(req, res) {
  res.send('login page');
});
于 2013-04-10T08:15:30.940 に答える
1

私はずっと前にノードで作業していますが、動作するはずです

function requireLogin(req, res, next) {
  if (req.session.loggedIn) {
    next(); // allow the next route to run
  } else {
    // require the user to log in
    res.redirect("/"); // or render a form, etc.
  }
}

// Automatically apply the `requireLogin` middleware to all
// routes starting with `/`
app.all("/*", requireLogin, function(req, res, next) {
  next(); // if the middleware allowed us to get here,
      // just move on to the next route handler
});
于 2013-04-10T08:12:02.000 に答える
1

パスポートのようなものを使用できます。これにより、許可されたルートの確認がはるかに簡単になります

function ensureAuthenticated(req, res, next) {
 if (req.isAuthenticated()) { return next(); }
 res.redirect('/login')  //Or whatever your main page is 
};

このようにルートを確認できるようになりました

app.get('/account',ensureAuthenticated,routes.account);
于 2013-04-10T08:14:37.243 に答える