11

私は Node (最新バージョン) + Express を使用しており、これも最新バージョンです。public と secure の 2 つのフォルダーがあります。セキュリティで保護されたフォルダーは、ログイン後にのみアクセスできるようにする必要があります。

自分でログイン システムを作成しましたが、この "secure-folder" へのルートをセキュリティで保護するにはどうすればよいでしょうか。

「保護された」フォルダーへの静的ルートを設定することを考えていました(パブリックフォルダーで行ったように)、ユーザーがログインしているかどうかを確認しましたが、機能しません。

これは私がうまくいくと思ったものです...

(...)
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'secured')));
(...)

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("/login"); 
  }
}

app.all("/secured/*", requireLogin, function(req, res, next) {
  next(); 

});
4

2 に答える 2

17

別のルートでプライベート スタティック用に別のフォルダーを指定する

app.use(express.static(path.join(__dirname, 'public')));
app.use('/private', express.static(path.join(__dirname, 'private')));

その後、リクエストごとにミドルウェアを使用できます

app.all('/private/*', function(req, res, next) {
  if (req.session.loggedIn) {
    next(); // allow the next route to run
  } else {
    // require the user to log in
    res.redirect("/login"); 
  }
})
于 2013-01-30T21:00:08.967 に答える
5

最初の app.use の前に、

のようなものを追加

app.use(function(req, res, next) {
  if (req.url.match(/^\/secured\//)) {
    return requireLogin(req, res, next);
  }
  next();
})
于 2013-01-30T20:27:23.467 に答える