11

我使用 Node(最新版本)+ Express,也是最新版本。我有 2 个文件夹,公共的和安全的。安全文件夹只能在登录后访问。

我自己创建了一个登录系统,现在我想知道如何保护到这个“安全文件夹”的路径。

我正在考虑为我的“安全”文件夹设置一条静态路由(就像我对公共文件夹所做的那样),然后检查用户是否已登录,但它不起作用。

这是我认为应该工作的......

(...)
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 回答