2012-02-26 56 views
7

在Node.js下的Express中,我想檢查特定路徑下的請求(例如,/restricted),如果可接受,請將請求由靜態提供者,它處理緩存標頭等重定向到express.js中的靜態文件

如果我只是使用app.get('/restricted/:file', ...),然後使用res.sendfile發送靜態文件,如果批准,它將忽略任何緩存標題,並始終發送文件。

我不能使用一攬子登錄檢查,因爲不同的用戶應該只能得到不同的文件。

實現此目的的最佳方法是什麼?

回答

14
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); 

這將在適當時使用靜態中間件,包括其所有功能。否則,您可以酌情處理未經授權的請求。

+0

正是我所需要的,謝謝! – w00t 2012-02-27 10:37:50

+0

通常(不受保護)我通過'app.use(express.static('public'));'提供頁面。在使用你的方法時,HTML加載但所有樣式和腳本都消失了(404)。 – Sebastian 2016-08-01 19:54:22

相關問題