2013-07-19 5 views
6

इस कोड को बिना किसी अधिकृत उपयोगकर्ताओं के पृष्ठों की सुरक्षा के लिए पर्याप्त मार्ग के अंदर रखा जा रहा है?केवल पासपोर्टजे प्रमाणीकृत उपयोगकर्ताओं को सुरक्षित पृष्ठ पर जाने के लिए अनुमति दें

if (!req.user) return res.send(401, "Not allowed in"); 

उत्तर

18

आप req.isAuthenticated() का उपयोग यह जांचने के लिए कर सकते हैं कि अनुरोध प्रमाणित है या नहीं।

function ensureAuthenticated(req, res, next) { 
    if (req.isAuthenticated()) { return next(); } 
    res.redirect('/login') 
} 

app.get('/server', ensureAuthenticated, routes.server.get); 
app.get('/login', routes.login.get); 

या इस

app.all('*', function(req,res,next){ 
    if (req.params === '/' || req.params === '/login') 
    next(); 
    else 
    ensureAuthenticated(req,res,next); 
}); 
+7

मसीह, भगवान का शुक्र है 'isAuthenticated()' है * * पूरी तरह से अनियंत्रित **। यह पुस्तकालय के पूरे बिंदु की तरह है। कुछ दिन मैं इस जेरेड हैंनसन लड़के को ढूंढने जा रहा हूं, उसके घर पर एक बड़े रबड़ के हाथ के साथ एक ड्रोन भेजो, और बस पासपोर्ट के साथ दुनिया को टोल करने के लिए उसे बार-बार मार डालो। धन्यवाद। –

+0

आमेन! ठीक है दोस्त! @JasonC –

2

यह तब तक पर्याप्त है जब तक आप कहीं भी मार्ग नहीं ले रहे हैं। बस सुनिश्चित करें कि आपके मार्ग उचित क्रम में हैं।

//checks to be sure users are authenticated 
app.all("*", function(req, res, next){ 
    if (!req.user) 
    res.send(403); 
    else 
    next(); 
}); 
//additional routes will require authentication due to the order of middleware 
app.get("/admin", .... 

हालांकि, यदि आप वैश्विक स्तर से ऊपर व्यवस्थापक मार्ग ले जाते हैं, तो व्यवस्थापक मार्ग अब सुरक्षित नहीं होगा। आप उद्देश्य से पहले अपना लॉगिन पेज रखना चाहते हैं, इसलिए उदाहरण के लिए प्रमाणीकरण की आवश्यकता नहीं है।

2

user568109 के जवाब के लिए एक सुधार की तरह, कोड एक्सप्रेस 4 के साथ इस तरह होना चाहिए:

app.all('*', function(req,res,next) { 
    if (req.path === '/' || req.path === '/login') 
    next(); 
    else 
    ensureAuthenticated(req,res,next); 
}); 
संबंधित मुद्दे

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