2012-01-04 12 views
5

मैं एक मार्ग है कि सफल प्रवेश पर पुनर्निर्देशएक्सप्रेस पुन: निर्देशित नहीं बदलता है req.url

app.post('/login', function(req, res){ 
    if(req.body.password === Server.cfg.auth.userPass) { 
    req.session.user = {nick: req.body.username, pass: req.body.password} 
    res.redirect('/chat') 
    } else { 
    res.render('user/login', { locals: { error: 'Invalid password' } }) 
    } 
}) 

रीडायरेक्ट काम करने के लिए के रूप में पृष्ठ सही तरीके से प्रदान की गई जेड फ़ाइल के साथ ताज़ा किया जाता है लगता है की है। हालांकि, यूआरएल अभी भी कहता है/लॉगिन और मेरा पेजटाइट वैरिएबल (टेम्पलेट वर्र्स के माध्यम से सेट किया जा रहा है) या तो नहीं बदलता है। अगर मैं रीडायरेक्ट के बाद पेज रीफ्रेश करता हूं, तो सबकुछ उस तरीके से बदलता है जिस तरह से होना चाहिए। यह केवल रीडायरेक्ट के बाद है कि यह नहीं बदलता है।

+0

उद्धरणों में लपेटा नहीं जाना चाहिए? res.redirect ("/ chat")? – alessioalex

+0

yesh, धन्यवाद, प्रश्न दर्ज करने पर टाइपो :) –

+0

क्या आप req.method = 'GET' डालने का प्रयास कर सकते हैं; 'res.redirect से पहले? मुझे पता है कि मुझे पोस्ट मार्ग पर रीडायरेक्ट करने में एक ही समस्या है और यह उस पल में एक्सप्रेस में एक बग था। – alessioalex

उत्तर

1

यह सर्वर नियंत्रित विकास पृष्ठभूमि से आने वाले AJAX रीडायरेक्ट से निपटने का प्रयास करने वाले लोगों के लिए एक बहुत ही आम मिश्रण होना चाहिए। मेरा उदाहरण दिखाता है कि अगर प्राधिकरण विफल रहता है, तो थोड़ा अलग होता है; लेकिन आप प्रतिक्रिया और जांच स्थिति, आदि को अवरुद्ध करने की एक ही अवधारणा का उपयोग कर सकते हैं, और क्लाइंट जावास्क्रिप्ट को रीडायरेक्ट करने दें।

मेरे क्लाइंट कोड वास्तव में एक रीढ़ मॉडल है लेकिन बदले में की तरह jQuery के ajax बुला रहा है:

model.save({ error:function... 

सर्वर

function requiresLogin(req, res, next) { 
    if(req.session.user) { 
     next(); 
    } else { 
     //res.redirect('/sessions/new?redir=' + req.url); // won't work 
     res.send("Unauthorized", 403); // send 403 http status 
    } 
} 

ग्राहक

// Assumes you can get http status from response 
    error: function(resp, status, xhr)... 
     if(resp.status === 403) { 
      window.location = '/sessions/new'; // optionally put a redirLastPage=somewhere 
     } 

यह वांछित के रूप में काम करता है मेरे लिए। मैं यह भी देखने के लिए कि यह

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