2013-01-02 16 views
10

प्रमाणीकृत करने के बाद उपयोगकर्ता को मूल गंतव्य पर अग्रेषित करें मेरे पास एक ऐप है जो सर्वर पर नोड + एक्सप्रेस + पासपोर्ट और क्लाइंट पर jQuery + Backbone.js है। क्लाइंट यूआरएल में हैश टैग का उपयोग करता है, लेकिन कुछ कार्यक्षमता के लिए उपयोगकर्ता के लिए लॉग इन करना महत्वपूर्ण है।Passport.js + Express.js

मैं चाहता हूं कि ऐप यूआरएल के माध्यम से पहुंचा जा सके, उदा। http://mydomain.com/app#cone/waffle/flavor/mint/toppings/sprinkles ऐसी है कि:

  • ही उपयोगकर्ता पहले में लॉग ऑन है, वे सीधे बाधाओं के बिना अनुरोध किया गया URL के लिए जाना
  • यदि उपयोगकर्ता पहले से प्रवेश नहीं है, वे /login पर जाएं और फिर अनुरोध किया गया URL के लिए जाना

इस अतः पोस्ट के बाद, Custom returnUrl on Node.js Passport's Google strategy, मेरे पास है ताकि

  • वे पहले से लॉग इन कर रहे हैं, वे घ जाना irectly यूआरएल, हैश टैग और सभी
  • वे लॉगिन नहीं कर रहे थे, यह उनके प्रवेश पृष्ठ पर है, तो अनुरोध किया गया URL पर ले जाता है, लेकिन ...

यह हैश को निकाल देते हैं लगता है लॉगिन के बाद रीडायरेक्ट पर मूल यूआरएल से पैरामीटर।

क्या मूल गंतव्य पर रीडायरेक्ट करते समय हैश पैरामीटर को संरक्षित करने का कोई तरीका है?

इस पोस्ट से, Getting hash parameters from request url मुझे यह विचार मिलता है कि हैश टैग सर्वर पर उपलब्ध नहीं हैं, जो हैश टैग का उपयोग करने का पूरा बिंदु है।

तो मुझे संदेह है कि यह संभव नहीं है। हो सकता है कि स्थानीय रूप से पैरा को स्थानीय रूप से कैश करें और उन्हें रीडायरेक्ट पर पुनर्प्राप्त करें, [original URL minus hastags] + #use-cached-params पर कहें?

उत्तर

9

हैश पैरामीटर केवल ब्राउज़र हैं, वे सर्वर पर नहीं जाएंगे।/हैश

  • में लॉग इन के साथ

    • प्राप्त/कुछ/पेज #: आप वापस पुनः निर्देशित, हैश टैग और सभी के लिए हालांकि इस तकनीक का प्रयोग कर सकते हैं? फिर पेज
    • लॉग इन नहीं किया गया है? एक पेज है कि उस पर कुछ जावास्क्रिप्ट है प्रस्तुत करना कहते हैं, 'getHash.jade'
    • getHash.jade: प्रतियां पूर्ण URL फिर '/ लॉगिन & रीडायरेक्ट =' + originalURL
    • प्राप्त/लॉगिन रीडायरेक्ट (अब आप कर सकते हैं सर्वर पर हैश को सहेजें और इसे वहां से लें)
  • +0

    आह, यह वह चाल है जिसे मैं ढूंढ रहा था। धन्यवाद! – prototype

    +0

    आपको इसे उत्तर के रूप में चिह्नित करना चाहिए :) – hunterloftis

    1

    यहां कुछ और विस्तार से एंकर लिंक कैप्चर करने का तरीका बताया गया है। सभी वेब ढांचे में काम करता है।

    मैं वर्णन करने के लिए एक उदाहरण के परिदृश्य का उपयोग करेंगे: मान लीजिए कि हम एक गहरी यूआरएल पर कब्जा करने की आवश्यकता है http://server.com/#/xyz एक अप्रमाणित उपयोगकर्ता इतना है कि वे है कि गहरे यूआरएल के बाद लॉगिन पर पुनः निर्देशित किया जा सकता द्वारा अनुरोध किया।

    1. अप्रमाणित उपयोगकर्ता का अनुरोध करता है http://server.com/#/xyz ('#' के बाद सर्वर को नहीं भेजा जाता है से सब कुछ)।

    2. सभी सर्वर जानते हैं कि उपयोगकर्ता http://server.com/ चाहता है और वे अनधिकृत हैं। सर्वर उपयोगकर्ता को लॉगिन फॉर्म पर रीडायरेक्ट करता है।

    3. यहाँ चालाक सा है: ग्राहक अभी भी अपने मूल अनुरोध पर इंतज़ार कर रहा है, इसलिए यदि सर्वर कुछ जे एस के साथ लॉगिन फार्म का है कि संदर्भ window.location.href में एक छिपा तत्व भी शामिल है, इसके बारे में पूर्ण URL पर कब्जा कर सकते हैं मूल अनुरोध लंगर भाग के साथ पूरा:

      <form action="/login" method="post"> 
          <div> 
          <label>Username:</label> 
          <input type="text" name="username"/><br/> 
          </div> 
          <div> 
          <label>Password:</label> 
          <input type="password" name="password"/> 
          </div> 
          <!-- XXXXXXXXX CLEVER BIT XXXXXXXXXX--> 
          <script> 
          document.write('<input type="hidden" name="from" value="'+document.location.href+'"/>'); 
          </script> 
          <!-- XXXXXXXXXX--> 
          <div> 
          <input class="submit-button" type="submit" value="Submit"/> 
          </div> 
      </form> 
      
    4. उपयोगकर्ता themself और मूल URL पोस्ट के साथ भेजा जाता प्रमाणित करता है। सर्वर तब उपयोगकर्ता को मूल गहरे यूआरएल पर रिले कर सकता है।

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