2012-02-26 17 views
7

W Express pod Node.js, chciałbym sprawdzić żądanie pod konkretną ścieżką (na przykład /restricted) i jeśli jest to dopuszczalne, poproś o obsługę przez statyczne dostawca, który obsługuje nagłówki buforowania itp.Przekierowanie do pliku statycznego w pliku express.js

Jeśli po prostu użyję app.get('/restricted/:file', ...), a następnie użyję res.sendfile do wysłania statycznego pliku, jeśli zostanie on zatwierdzony, zignoruje on wszelkie nagłówki buforowania i zawsze wyśle ​​plik.

Nie mogę użyć sprawdzonego konta, ponieważ różni użytkownicy powinni uzyskiwać tylko różne pliki.

Jaki jest najlepszy sposób wdrożenia tego?

Odpowiedz

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

Używa statycznego oprogramowania pośredniego, jeśli jest odpowiednie, włączając w to wszystkie jego funkcje. W przeciwnym razie możesz obsłużyć nieautoryzowane żądania.

+0

dokładnie to, czego potrzebowałem, dzięki! – w00t

+0

Normalnie (niechroniony) Obsługuję stronę za pomocą 'app.use (express.static ('public'));'. Podczas korzystania z tego podejścia ładuje się HTML, ale wszystkie style i skrypty zniknęły (404). – Sebastian

Powiązane problemy