限制对 ExpressJS 中静态文件的访问

Ste*_*hen 5 node.js express

我有一个服务器,它通过中间件路由几乎所有内容以检查您是否已登录,但这仅适用于路由。我还希望它能够处理目录中的静态文件public。我该怎么做?

更新:最好不要担心保护/public文件夹中的内容,因为 express 提供了一项res.download(...)功能。Express.JS GitHub 页面上的示例

Ray*_*nos 5

澄清静态文件也是服务器通过使用express.static中间件表达。理论上,您可以在它之前包含中间件来处理安全性。除了静态中间件的想法之外,您只能使文件夹public静态可用,因为它是public

您可以在此处找到定义的静态。您可以重写它以允许您将中间件注入其中。

或者您可以自己编写一个简单的静态文件路由器。

您是否尝试在静态中间件之前在中间件中注入自己的安全日志。

app.use(security);
app.use(express.static(dirname + '/public'));
Run Code Online (Sandbox Code Playgroud)