1

我正在使用护照和一些静态 .html 文件。我想将它们作为快速视图或静态文件包含在内。现在我希望每个人都可以使用像 login.html 这样的一些 .html 文件,但是像 secret.html 这样的其他视图文件应该需要通行证。我知道,您可以将 app.get('somePath', ensureAuthenticated, function (req, res, next) {}其用于路由,但我希望它用于静态文件

如何以非骇客的方式做到这一点?

4

1 回答 1

1

如果所有“安全”文件共享一个不同的 URL 前缀,例如/public/secure,您可以使用此路径:use() ensureAuthenticated

app.use('/public/secure', ensureAuthenticated);
app.use('/public', express.static(__dirname + '/public'));

否则,express.static()中间件不会提供很多控制访问的选项。在大多数情况下,它假定给定路径中的所有可用文件都是“公共的”。

不过,它通常会拒绝发送隐藏文件,遵循 *nix.前缀标准:

~/path/to/.secret.html

然后,要实际提供它,您可以按照您建议的路线自己发送文件,并附上中间件:

app.get('/path/to/secret.html', ensureAuthenticated, function (req, res) {
    res.sendfile(__dirname + '/path/to/.secret.html');
});

而且,您可能需要考虑将其移出您的static()目录,

于 2013-09-18T07:39:32.900 回答