2012-01-06 9 views
11

मैं express.js पर फ़िल्टर से पहले रेल जैसे फ़िल्टर करना चाहता हूं। मेरे पास photo.js नाम की एक फ़ाइल है जहां मैं वहां अपने सभी फोटो संबंधित मार्ग डाल रहा हूं। लेकिन मुझे ऐसे उपयोगकर्ता को रीडायरेक्ट करने की आवश्यकता है जो लॉगिन सिस्टम पर मेरे सिस्टम पर प्रमाणित नहीं है। मैं एक beforeFilter ऐसा है तो मैं अपने सभी मार्गों में उस तर्क डाल करने की आवश्यकता नहीं है ...express.js पर फ़िल्टर

धन्यवाद

उत्तर

14

यदि आप सब कुछ अपनी फोटो.जेएस फ़ाइल में रखना चाहते हैं, तो मुझे लगता है कि ऐप रूट का उपयोग करना और ऐप रूटिंग में निर्मित कई कॉलबैक (जो रूटिंग में मिडलवेयर की तरह काम करते हैं) पास करना बेहतर तरीका है। उदाहरण

app.all('/photo/*', requireAuthentication, loadUser); 

app.get('/photo/view', function(req, res) { 
    res.render('photo_view'); 
}); 

app.get('/photo/list', function(req, res) { 
    res.render('photo_list'); 
}); 

लिए requireAuthentication और loadUser कहाँ कार्य हैं।

एक http://expressjs.com/api.html#app.all

+0

'all' का उपयोग करना एक शानदार तरीका है। मैं इसे अपने मार्गों के लिए 'एक्सप्रेस-थ्रेससोर्स' के शीर्ष पर उपयोग कर रहा हूं, और यह प्रमाणीकरण और प्रमाणीकरण के लिए बहुत अच्छी प्रशंसा करता है। – JohnnyCoder

3

एक्सटेंशन या express-resource की तरह उच्च स्तर के चौखटे हैं करना चाहते हैं।

+0

पर app.VERB के लिए दस्तावेज और app.all देखो ले लो कैसे व्यक्त संसाधन के बारे में यहां समस्या की तरह जिम्मेदारी/फिल्टर की श्रृंखला में मदद करता है? असल में जिथब कोई उदाहरण नहीं देता है, आपके पास एक है? –

3

रेल से पहले_फिल्टर अवधारणा नक्शे से मिडलवेयर अवधारणा के करीब मिलती है, जो एक्सप्रेस का हिस्सा है। आप इसे अपने प्रमाणीकरण फ़ंक्शन के साथ प्रत्येक फोटो से संबंधित मार्ग से पहले मैन्युअल रूप से सेट कर सकते हैं, या टीजे का उल्लेख उच्च स्तर का उपयोग कर सकते हैं। इसे मैन्युअल रूप से ऐसा करने के लिए सिर्फ इस (छद्म coffeescript) की तरह कुछ की बात

myAuthMiddleware = (req, res, next) -> 
    if not req.session.user? 
    res.redirect "/" 
    else 
    next() 

editPhoto = (req, res) -> 
    .... 

deletePhoto = (req, res) -> 
    .... 

app.use(myAuthMiddleware, func) for func in [editPhoto, deletePhoto] 

क्या कह रहा है कि editPhoto और deletePhoto मिडलवेयर कार्यों के लिए एक before_filter तरह myAuthMiddleware का उपयोग है किया जाएगा।

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