2012-02-26 25 views
7

En Express en Node.js, me gustaría inspeccionar una solicitud en una ruta específica (por ejemplo, /restricted) y si es aceptable, solicite que la solicitud sea manejada por proveedor, que maneja los encabezados de almacenamiento en caché, etc.Redireccionamiento a un archivo estático en express.js

Si simplemente uso app.get('/restricted/:file', ...) y luego uso res.sendfile para enviar el archivo estático si está aprobado, ignorará los encabezados de almacenamiento en caché y siempre enviará el archivo.

No puedo usar una verificación integrada de manta porque los diferentes usuarios solo deben obtener archivos diferentes.

¿Cuál es la mejor manera de implementar esto?

Respuesta

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

Esto utilizará el middleware estático cuando corresponda, incluida toda su funcionalidad. De lo contrario, puede manejar solicitudes no autorizadas según corresponda.

+0

exactamente lo que necesitaba, ¡gracias! – w00t

+0

Normalmente (sin protección) Estoy sirviendo la página a través de 'app.use (express.static ('public'));'. Al usar su enfoque, el HTML se carga, pero todos los estilos y scripts desaparecieron (404). – Sebastian

Cuestiones relacionadas