Node.js 重定向到express.js中的静态文件

Node.js 重定向到express.js中的静态文件,node.js,express,Node.js,Express,在Node.js下的Express中,我想检查特定路径下的请求(例如,/restricted),如果可以接受,则由处理缓存头等的静态提供程序处理该请求 如果我只是使用app.get('/restricted/:file',…)然后使用res.sendfile发送静态文件(如果获得批准),它将忽略任何缓存头并始终发送该文件 我不能使用全面登录检查,因为不同的用户只能获得不同的文件 实现这一点的最佳方式是什么 var express = require("express"); var app = e

在Node.js下的Express中,我想检查特定路径下的请求(例如,
/restricted
),如果可以接受,则由处理缓存头等的静态提供程序处理该请求

如果我只是使用
app.get('/restricted/:file',…)
然后使用
res.sendfile
发送静态文件(如果获得批准),它将忽略任何缓存头并始终发送该文件

我不能使用全面登录检查,因为不同的用户只能获得不同的文件

实现这一点的最佳方式是什么

var express = require("express");
var app = express.createServer();

var staticMiddleware = express.static(__dirname + "/public");

app.get("/restricted/:file", function(req, res, next) {
  var authorized = true;
  //Compute authorization appropriately here
  if (authorized) {
    staticMiddleware(req, res, next);
  } else {
    res.send(401);
  }
});
app.listen(3456);
这将在适当时使用静态中间件,包括其所有功能。否则,您可以根据需要处理未经授权的请求。

通常(不受保护)我通过
app.use(express.static('public'))提供页面服务。使用您的方法时,会加载HTML,但所有样式和脚本都会消失(404)。