2012-02-26 12 views
7

में एक स्थिर फ़ाइल पर रीडायरेक्ट करना नोड.जेएस के तहत एक्सप्रेस में, मैं एक विशिष्ट पथ (कहें, /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

+0

आम तौर पर (असुरक्षित) मैं 'app.use (express.static (' public ')) के माध्यम से पृष्ठ की सेवा कर रहा हूं; '। अपने दृष्टिकोण का उपयोग करते समय, एचटीएमएल लोड करता है लेकिन सभी शैलियों और स्क्रिप्ट चली जाती हैं (404)। – Sebastian

संबंधित मुद्दे