在Node.js Express中拒绝访问特定目录

5
我正在使用Node Express尝试拒绝公众查看特定目录中的文件,以下是代码:

我正在使用Node Express尝试拒绝公众查看特定目录中的文件,以下是代码:

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

app.all('/partials/*', function (req,res, next) {

    res.status(403).send(
    {
        message: 'Access Forbidden'
    });
    next();
});

如果我路由到 localhost/partials,我会收到“访问被禁止”的消息,但如果我路由到 localhost/partials/files.html,则不会收到该消息。
有什么建议吗?

options 的作用是什么? - Mukesh Sharma
抱歉,这里实际上没有任何内容... - Kob_24
我有一些文件,我试图隐藏它们。 - Kob_24
app.use(express.static(path.join(__dirname, 'partials'))); 的意思是 localhost/files.html 可以访问 partials 文件夹中的所有静态内容。 - Mukesh Sharma
1个回答

7

node.js 中语句的顺序很重要。

app.all('/partials/*', function (req,res, next) {
   res.status(403).send({
      message: 'Access Forbidden'
   });
});

//this line is used to load resources at localhost/partials/api.html
//but, because of above code snippets, we have blocked /partials/* routes
//hence, this line will practically wont work.
app.use('/partials',express.static(path.join(__dirname, 'partials')));

@Muskesh Sharma 但是如果我这样做,我就无法路由到其他页面。 - Kob_24
我将partials作为public的子文件夹。当我按照您所说的做时,我无法路由到其他页面。我还使用express.static提供公共服务。 - Kob_24
请注意,如果partials的父目录设置为静态文件目录,则此方法将无法正常工作。 - benjaminz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接