我正在使用护照和一些静态 .html 文件。我想将它们作为快速视图或静态文件包含在内。现在我希望每个人都可以使用像 login.html 这样的一些 .html 文件,但是像 secret.html 这样的其他视图文件应该需要通行证。我知道,您可以将
app.get('somePath', ensureAuthenticated, function (req, res, next) {}
其用于路由,但我希望它用于静态文件。
如何以非骇客的方式做到这一点?
我正在使用护照和一些静态 .html 文件。我想将它们作为快速视图或静态文件包含在内。现在我希望每个人都可以使用像 login.html 这样的一些 .html 文件,但是像 secret.html 这样的其他视图文件应该需要通行证。我知道,您可以将
app.get('somePath', ensureAuthenticated, function (req, res, next) {}
其用于路由,但我希望它用于静态文件。
如何以非骇客的方式做到这一点?
如果所有“安全”文件共享一个不同的 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()
目录,