2014-07-07 6 views
10

मैं एक एक्सप्रेसजेएस संस्करण 4 ऐप में लॉगिन सुविधा को लागू करने की कोशिश कर रहा हूं। मुझे यह निर्धारित करने की ज़रूरत है कि कुछ कार्य करने से पहले कोई उपयोगकर्ता लॉग इन हो या नहीं। तो मेरे पास isLoggedIn नामक एक मिडलवेयर है जो पूरी तरह से जांचता है कि उपयोगकर्ता ऑब्जेक्ट सत्र में है, यदि नहीं, तो उपयोगकर्ता को लॉगिन पृष्ठ पर रीडायरेक्ट किया जाता है। उपयोगकर्ता सफलतापूर्वक लॉग इन करने के बाद, उसे मूल यूआरएल पर रीडायरेक्ट किया जाना चाहिए।expressjs संस्करण 4 में req.url और req.originalUrl के बीच अंतर 4

app.get('/someaction', isLoggedIn, 'actual function to be executed'); 

अब isLoggedIn विधि के अंदर, मैं उस req.url देख सकते हैं और req.originalUrl अनुरोध किया एसी tion में शामिल है। हालांकि यदि उपयोगकर्ता लॉग इन नहीं होता है, जब/लॉगिन पेज पर रीडायरेक्ट किया जाता है, तो req.url और req.originalUrl दोनों में सामग्री के रूप में "/ login" है। मैंने here को पढ़ा है, मैं आंतरिक रूटिंग उद्देश्यों के लिए req.url ओवरराइड कर सकता हूं। लेकिन मेरे मामले में req.url और req.originalUrl "/ login" कार्रवाई से अधिक हो जाता है। मैं क्या गलत कर रहा हूं?

उत्तर

1

समस्या यह है कि वास्तव में आपके सर्वर पर दो पूरी तरह अलग अनुरोध आ रहे हैं। /login पृष्ठ के लिए अनुरोध उस पृष्ठ के बारे में कुछ नहीं जानता है जिस पर ग्राहक ने उससे पहले अनुरोध किया था। तो जब आप /login पृष्ठ पर रीडायरेक्ट करते हैं, तो आपको मूल रूप से अनुरोध किए गए URL के बारे में जानकारी कहीं सेव करने की आवश्यकता होती है। मैं 2 समाधान के बारे में पता:

  1. सत्र राज्यों के साथ कुछ फैंसी काम शायद वादों का उपयोग कर, आप एक चर के रूप में मूल URL को बचाने के लिए अनुमति देता है।

  2. /login अनुरोध पर एक क्वेरी पैरामीटर के रूप में मूल URL जोड़ें। इस उत्तर के बाहर

की जांच: How do I find original request path before redirect Express 4

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