मैं एक नया सॉल्यूशन लेकर आया हूं, जिसमें थोड़ा सा ओवरहेड है, लेकिन लगता है कि यह अब तक एक प्रोटोटाइप के रूप में काम कर रहा है। एक धारणा यह है कि आप लॉग इन करने के लिए एक सम्मान प्रणाली के वातावरण में हैं, हालांकि जब भी आप टैब स्विच करते हैं तो यह पासवर्ड रेयर करके अनुकूलित किया जा सकता है।
एक नया ब्राउज़र टैब स्विच करने पर पता लगाने के लिए लोकलस्टोरेज (या समतुल्य) और HTML5 स्टोरेज इवेंट का उपयोग करें कि कौन सा उपयोगकर्ता सक्रिय है। जब ऐसा होता है, तो एक संदेश के साथ एक भूत ओवरले बनाएं, जिसमें कहा गया है कि आप वर्तमान विंडो का उपयोग नहीं कर सकते हैं (या अन्यथा विंडो को अस्थायी रूप से अक्षम कर सकते हैं, आप यह नहीं चाह सकते हैं कि यह स्पष्ट हो।) जब विंडो ध्यान केंद्रित करती है, तो AJAX अनुरोध लॉगिंग भेजें। उपयोगकर्ता वापस अंदर
इस दृष्टिकोण के लिए एक चेतावनी: आपके पास कोई भी सामान्य AJAX कॉल नहीं हो सकता है (यानी, जो आपके सत्र पर निर्भर करते हैं) एक विंडो में होती है जिसमें फोकस नहीं होता है (उदाहरण के लिए यदि आपके पास कॉल देरी से हो रही है), जब तक कि आप मैन्युअल रूप से उससे पहले एक AJAX पुनः लॉगिन कॉल करें। तो वास्तव में आप सभी की जरूरत है अपने AJAX समारोह की जाँच करने के लिए सबसे पहले सुनिश्चित करें कि localStorage.currently_logged_in_user_id === window.yourAppNameSpace.user_id, और यदि नहीं, तो AJAX में पहले लॉग इन करें।
एक और दौड़ की स्थिति है: यदि आप इसे तेज करने के लिए खिड़कियों को तेजी से स्विच कर सकते हैं, तो आप एक relogin1-> relogin2-> ajax1-> ajax2 अनुक्रम के साथ गलत सत्र के तहत बनाया जा सकता है। एक सरणी पर लॉगिन AJAX अनुरोधों को धकेल कर और फिर एक नया लॉगिन अनुरोध जारी करने से पहले, सभी वर्तमान अनुरोधों को रद्द कर दें।
विंडो रीफ़्रेश करने के लिए अंतिम गोच देखने के लिए है। यदि किसी ने AJAX लॉगिन अनुरोध सक्रिय करते समय विंडो को ताज़ा किया है, लेकिन पूरा नहीं हुआ है, तो वह गलत व्यक्ति के नाम से ताज़ा हो जाएगा। इस मामले में आप संभावित मिक्सअप के बारे में उपयोगकर्ता को चेतावनी देने और उन्हें रद्द करने पर क्लिक करने के लिए नॉनस्टैंडर्ड पहले से लोड किए गए इवेंट का उपयोग कर सकते हैं, इस बीच AJAX लॉगिन अनुरोध को फिर से जारी कर सकते हैं। फिर अनुरोध पूरा होने से पहले ओके पर क्लिक करने से (या गलती से एंटर / स्पेसबार से टकराने से, केवल वही तरीका है, क्योंकि ओके - दुर्भाग्य से इस मामले के लिए है - डिफ़ॉल्ट।) इस मामले को संभालने के अन्य तरीके भी हैं, जैसे F5 और Ctrl + R / Alt + R प्रेस का पता लगाना, जो ज्यादातर मामलों में काम करेगा लेकिन उपयोगकर्ता कीबोर्ड शॉर्टकट पुन: संयोजन या वैकल्पिक OS उपयोग द्वारा विफल हो सकता है। हालांकि, यह वास्तविकता में एक किनारे का मामला है, और सबसे खराब स्थिति यह है कि कभी भी बुरा नहीं होता है: एक सम्मान प्रणाली विन्यास में, आपको गलत व्यक्ति के रूप में लॉग इन किया जाएगा (लेकिन आप यह स्पष्ट कर सकते हैं कि यह रंगों, शैलियों के साथ पृष्ठों को वैयक्तिकृत करके, प्रमुख रूप से प्रदर्शित नाम हैं,) आदि।); पासवर्ड कॉन्फ़िगरेशन में, ओनस आखिरी व्यक्ति पर है जिसने अपना पासवर्ड लॉग इन किया है या अपना सत्र साझा किया है, या यदि यह व्यक्ति वास्तव में वर्तमान उपयोगकर्ता है, तो कोई उल्लंघन नहीं है।
लेकिन अंत में आपके पास एक उपयोगकर्ता-प्रति-टैब अनुप्रयोग है (उम्मीद है कि) यह केवल उसी तरह से कार्य करता है, जैसा कि आवश्यक रूप से प्रोफाइल को सेट किए बिना, IE का उपयोग करना या URL को फिर से लिखना। सुनिश्चित करें कि आप प्रत्येक टैब में यह स्पष्ट करते हैं कि उस विशेष टैब में लॉग इन किया गया है, हालांकि ...