如何使用Express和Nodejs来保护静态路由

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

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

我很想设置一个静态路由到我的“安全”文件夹(就像我用公共的一个),然后检查用户是否login,但它不工作。

这是我认为应该工作…

(...) 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(); }); 

       

网上收集的解决方案 "如何使用Express和Nodejs来保护静态路由"

在单独的路线上为您的私人静力学指定一个不同的文件夹

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

在你的第一个app.use之前,

添加类似的东西

 app.use(function(req, res, next) { if (req.url.match(/^\/secured\//)) { return requireLogin(req, res, next); } next(); })