2009-09-02 9 views
5

मैं एक एएसपी.नेट एमवीसी ऐप विकसित कर रहा हूं और मुझे आश्चर्य है कि अजाक्स कॉल के दौरान पता चला एक समाप्त हो चुके .NET फॉर्म प्रमाणीकरण कुकी को संभालने का सबसे अच्छा तरीका कौन सा है।एक AJAX कॉल में समाप्त हो चुके .NET फॉर्म प्रमाणीकरण कोकी को संभालने का सबसे अच्छा तरीका?

क्या आपको लगता है कि कुकी वैधता के बारे में जानकारी वाले जेसनआरसल्ट में AJAX प्रतिक्रिया पैक करना सबसे अच्छा समाधान है?

उत्तर

2

मेरा पसंदीदा दृष्टिकोण यह कहना है कि सत्र समाप्त हो गया है, फिर एक लॉगिन पृष्ठ पर रीडायरेक्ट करें जो लॉगिन के बाद वर्तमान पृष्ठ पर वापस आ जाएगा।

+0

यह सबसे आसान/सुरक्षित दृष्टिकोण भी है। – Paul

0

यह सुनिश्चित नहीं है कि आप कौन से AJAX फ्रेमवर्क का उपयोग कर रहे हैं, लेकिन अधिकांश (asp.net AJAX सहित) आपको सर्वर फ़ंक्शन पर निर्दिष्ट करने के द्वारा सर्वर अपवादों को संभालता है।

Namespace.Object.Method (var1, var2, onSuccess, onError) {} .. आदि ..

आप asp.net का प्रबंधन सत्र, और जब तक उस पृष्ठ की प्रमाणीकृत उपयोगकर्ताओं के लिए सक्षम किया गया है चलो अगर केवल, फ्रेम समाप्त होने पर अमान्य सत्र अपवाद फेंक देगा (मैं वास्तव में भूल जाता हूं)

ऑनर के अंदर आप अपवाद प्रकार की जांच कर सकते हैं, और लॉगिन पृष्ठ पर पुनः निर्देशित कर सकते हैं। वास्तव में, आपको बस इतना करना है कि वर्तमान पृष्ठ पुनः लोड करें और .NET इसे आपके लिए लॉगिन पेज पर रीडायरेक्ट करेगा। document.location.href = document.location.href; (यदि कोई हो तो सबमिट किए गए फॉर्म डेटा को अनदेखा कर वर्तमान पृष्ठ को फिर से लोड करेगा)

1

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

पीएस - मैं Digg.com प्रकार लॉगिन इंटरफ़ेस सोच रहा हूं। टिप्पणी जोड़ें पर क्लिक करें, आपको मोडल पॉपअप मिलता है।

+0

यदि आप यह विधि करते हैं, तो सुनिश्चित करें कि अनुरोध एक HTTPS कनेक्शन पर जा रहा है, जैसा कि आपको सभी लॉग इन के लिए करना चाहिए। कौन सा, यदि आपका मुख्य पृष्ठ HTTPS नहीं है, तो आपको जेएस में समान मूल नीति के आसपास काम करना होगा। – Paul

+0

मैं एचटीटीपीएस से सहमत हूं, लेकिन लाइटबॉक्स का उपयोग करके, मुझे नहीं लगता कि आपको उसी उत्पत्ति के बारे में चिंता करने की ज़रूरत है। आप एक वास्तविक वेब पेज को IFrame में कितनी मात्रा में खोलने के लिए बुला रहे हैं, फॉर्म भरें, फॉर्म पोस्ट कर रहे हैं, .NET कुकी सेट करता है। दो पृष्ठों के बीच कोई जेएस कॉल नहीं जा रही है, यही कारण है कि कुकी को IFramed लॉगिन पेज से सेट करने के बाद फ़ॉर्म को फिर से सबमिट करना होगा। अब यदि आप एक ही उत्पत्ति को काम करना चाहते हैं, तो आप सफल लॉगिन के बाद फॉर्म स्वचालित रूप से सबमिट कर सकते हैं। – Tommy

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