2010-11-24 7 views
7

में प्रमाणीकरण सत्र समय समाप्त होने पर नियंत्रण मान खो गए हैं मेरे पास एक एएसपी.NET वेबसाइट है जो फॉर्म प्रमाणीकरण का उपयोग करती है। टाइमआउट बीस मिनट है।ASP.NET

मैंने देखा है कि यदि कोई उपयोगकर्ता आधा फॉर्म पूरा करता है, और फिर समय समाप्त हो जाता है, तो उसे लॉगिन पृष्ठ पर रीडायरेक्ट किया जाता है, इसे भर दिया जाता है, और इसे वापस फॉर्म पर रीडायरेक्ट किया जाता है लेकिन ईएमपीटीई नियंत्रण के साथ।

मैंने पहले ही माना था कि एएसपी.नेट कुछ स्कुलडगरी का उपयोग फॉर्म नियंत्रणों को दोबारा करने के लिए करेगा जब ऐसा होता है।

क्या कोई बदलाव है जो मैं यह सुनिश्चित करने के लिए कर सकता हूं?

उत्तर

1

मुझे लगता है कि आपकी समस्या का सबसे अच्छा समाधान slidingExpirationtrue पर web.config में प्रपत्र प्रमाणीकरण तत्व पर विशेषता है। इस तरह उपयोगकर्ता फॉर्म को भरने में 20 मिनट से अधिक समय लेते समय केवल अपना डेटा खो देता है।

समस्या तब होती है क्योंकि asp.net व्यूस्टेट नामक अवधारणा के माध्यम से फ़ॉर्म में दर्ज किए गए मानों को याद करता है, जो मूल रूप से केवल एक छिपी हुई फ़ील्ड फ़ील्ड है। जब सर्वर लॉगिन पृष्ठ पर रीडायरेक्ट करता है, तो सभी फॉर्म फ़ील्ड खो जाते हैं क्योंकि रीडायरेक्ट में पोस्ट डेटा नहीं हो सकता है।

यदि आप चाहते हैं कि आपके उपयोगकर्ता फॉर्म भरने में 20 मिनट से अधिक समय ले सकें, तो आप फॉर्म वाले पेज पर कुछ जावास्क्रिप्ट रखने पर विचार कर सकते हैं, जो हर एक्स मिनट में सर्वर पर AJAX कॉल करता है। स्लाइडिंग समाप्ति के साथ, यह एजेक्स कॉल को निकाल दिए जाने पर सत्र समाप्ति समय को रीसेट कर देगा, और इस प्रकार यह कभी भी आपके उपयोगकर्ता को तब तक लॉग इन करेगा जब तक वे फ़ॉर्म वाले पृष्ठ को देख रहे हों।

+0

मुझे समझ में आता है कि क्रॉस-पेज पोस्टिंग जैसी चीज भी है। मैंने सोचा था कि व्यूस्टेट को मूल पृष्ठ से, लॉगिन पृष्ठ के माध्यम से और फिर मूल पृष्ठ पर फिर से देखने के लिए एक अच्छा डिफ़ॉल्ट तंत्र हो सकता था। लेकिन अफसोस की बात नहीं! – David

+0

वैसे जवाब के लिए धन्यवाद, यह वही है जो मैं खोज रहा था। हालांकि प्रमाणीकरण के समय-समय पर प्रभावी ढंग से अक्षम करने के विचार पर मैं उत्सुक नहीं हूं। मुझे इसे कुछ विचार देने की ज़रूरत है। – David

0

ऑनचेंज ईवेंट में AJAX-style WebMethod को जोड़कर आप प्रत्येक नियंत्रण की सामग्री को गतिशील रूप से सहेज सकते हैं।

इस विधि का उपयोग करते हुए, सत्र समय समाप्त नहीं होगा क्योंकि उपयोगकर्ता हर 20 मिनट में कम से कम एक नियंत्रण में भर रहा था।

+0

मुझे इस समाधान को समझ में नहीं आता है। जावास्क्रिप्ट का उपयोग करके पेज के व्यूस्टेट को मैं कैसे संशोधित कर सकता हूं, इसे एन्कोड किया गया है? और व्यूस्टेट में सामानों को संग्रहीत करने में सहायता कैसे होती है जब व्यूस्टेट स्वयं संरक्षित नहीं होता है? क्लास के वर्णन के अनुसार, इसका AJAX भाग टाइमआउट को रोक देगा। – David

+0

पेज। व्यूस्टेट वास्तव में वेबमैड से उपलब्ध नहीं है (जहां तक ​​मैं बता सकता हूं) तो मैं अपना जवाब संशोधित करूंगा। मेरे जवाब में केवल एकमात्र शेष अंतर, AJAX को ऑन चेंज इवेंट्स पर तारों पर रख रहा है। धन्यवाद। – LesterDove