2009-03-20 10 views
5

जब आप एएसपीनेट सदस्यता का उपयोग कर रहे हैं और आपके पास नियंत्रक/एक्शन पर [अधिकृत] टैग है, कभी-कभी जब आप कॉफी/वापस चलने से वापस आते हैं, आप साइट से लॉग आउट हो गए हैं। जब आप एक बटन या लिंक पर क्लिक करते हैं जो अजाक्स कॉल को आमंत्रित करता है, तो लौटा हुआ HTML वह नहीं है जिसे आपने अनुरोध किया था लेकिन लॉगिन स्क्रीन, जिसे पृष्ठ पर कहीं भी प्रदान किया जाता है (यदि आप $ ("प्लेसहोल्डर") का उपयोग करते हैं। Html (परिणाम))।AJAX परिणाम में लॉगिन स्क्रीन - Asp.net Mvc

क्या jQuery में इसका पता लगाने के लिए वैसे भी है? चूंकि यह वैध एचटीएमएल है, आपको कोई त्रुटि नहीं मिलती है, लेकिन ऐसा कुछ नहीं है जिसे आप करना चाहते हैं।

उत्तर

6

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

6

tvanfosson का क्लाइंट-साइड सत्र टाइमआउट दृष्टिकोण बहुत अच्छी तरह से काम करता है, असल में - मैं कई साइटों से प्रभावित हूं कि मैं ' दोपहर के भोजन के बाद लौट आए और पाया कि वे स्वचालित रूप से लॉगिन पृष्ठ पर रीडायरेक्ट हो गए हैं।

एक और दृष्टिकोण के रूप में निम्नानुसार हो सकता है:

आप के लिए (जैसे)/खाता/विवरण एक अजाक्स अनुरोध भेजने के लिए, लेकिन अपनी प्रवेश कुकी, समाप्त हो गया है, ताकि आप उस देखने की अनुमति नहीं कर रहे हैं, इसके बजाय नियंत्रक रिटर्न/सुरक्षा/लॉगिन।

अपने नियंत्रक लॉगिन दृश्य के बजाय अनुरोध किया गया पृष्ठ देता है, तो आप 401 Not authorized200 के बजाय ठीक के जवाब कोड की स्थापना पर विचार किया है?

आपको अजाक्स प्रतिक्रिया के स्टेटस कोड का निरीक्षण करने के लिए अपने अजाक्स कॉलबैक को संशोधित करने की आवश्यकता होगी, और यदि यह 401 अधिकृत नहीं है, तो आप तदनुसार जवाब दे सकते हैं - लॉगिन पेज पर रीडायरेक्ट करें, पॉप-अप लॉगिन बॉक्स दिखाएं , या सिर्फ एक त्रुटि संदेश "क्षमा करें, आपको फिर से लॉग इन करने की आवश्यकता है"