2008-09-22 12 views
11

मैं वर्तमान में फैक्ट्री/वेयरहाउस प्रकार के स्थान पर उपयोग किए जाने वाले आंतरिक वेब एप्लिकेशन का निर्माण कर रहा हूं। उपयोगकर्ता कई लोगों के बीच एक पीसी साझा करेंगे, इसलिए हमें लोगों को घूमने और एप्लिकेशन को लॉग इन करने से रोकने के लिए काफी कम सत्र टाइमआउट होना चाहिए, जहां कोई और पीसी पर आ सकता है और पिछले उपयोगकर्ता के उपयोगकर्ता नाम के तहत कुछ कर सकता है।वेब ऐप्स में सत्र टाइमआउट से निपटने का सबसे अच्छा तरीका?

इस समस्या में एक सत्र समय-समय पर हो सकता है, जबकि उपयोगकर्ता वर्तमान में किसी रूप में जानकारी दर्ज कर रहा है, खासकर यदि वे लंबे समय तक लेते हैं।

आप उपयोगकर्ता के अनुकूल तरीके से इसका कैसे निपटेंगे?

उत्तर

3

सर्वर को इस तथ्य के बारे में सूचित रखें कि उपयोगकर्ता सक्रिय रूप से जानकारी दर्ज कर रहा है। उदाहरण के लिए यदि सर्वर टैब पर कुंजी के साथ टैब कुंजी या क्लिक दबाता है तो सर्वर को एक संदेश भेजें। अंतिम समाधान आपके ऊपर है।

+0

मुझे लगता है कि यह मेरे मामले के लिए सबसे अच्छा काम करेगा। यह एक संवाद बॉक्स पॉप अप करने और उस संदेश को प्रदर्शित करने से कम घुसपैठ कर रहा है जिसे उपयोगकर्ता शायद समझ नहीं पाएगा। और यह सर्वर को लगातार मतदान करके सत्र को अनिश्चित काल तक जीवित नहीं रखेगा। – anon

2

सबसे अच्छी सलाह शायद उपयोगकर्ताओं को ब्राउज़र विंडो को बंद करने के बाद बंद करने के लिए कहेंगी। सत्र-कुकीज के उपयोग के साथ, ब्राउज़र बंद होने पर या 30 मिनट के टाइमआउट पर अन्यथा सत्र समाप्त हो जाएगा (afaik बदला जा सकता है)।

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

3

आंशिक रूप से भरे हुए फॉर्म की सामग्री को नियमित रूप से छिपाने के लिए AJAX का उपयोग करें ताकि वे सिस्टम द्वारा बूट होने पर अपना काम खो न जाए। हेक, एक बार जब आप ऐसा कर रहे हों, तो वे समय टाइप करने के लिए अपने सत्र को समय-समय पर रखने के लिए AJAX का उपयोग करें।

1

शायद इस मामले में एक जीवित जावास्क्रिप्ट प्रक्रिया सहायक हो सकती है। यदि स्क्रिप्ट कुछ प्रमुख ट्रिगर्स को कैप्चर करती है, तो यह सत्र को जीवंत रखने के लिए सर्वर पर "मैं अभी भी टाइपिंग" संदेश भेजता हूं।

2

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

एक और समाधान सत्र टाइमआउट अनुस्मारक स्क्रिप्ट का उपयोग करना होगा जो उपयोगकर्ता को याद दिलाने के लिए एक संवाद पॉपअप करता है कि सत्र समय समाप्त हो रहा है। पॉपअप को "लॉगआउट" और "एप्लिकेशन का उपयोग जारी रखें" प्रदर्शित करना चाहिए जो सत्र समय को अद्यतन करने के लिए AJAX अनुरोध करता है।

1

क्या आपने इस फॉर्म को छोटे टुकड़ों में तोड़ने पर विचार किया है?

+0

यह उपयोगकर्ता के लिए थोड़ा परेशान हो सकता है, लेकिन सर्वर पक्ष सत्यापन को विभाजित करने से उपयोगकर्ता को कुछ परेशान होने पर उपयोगकर्ता को कम परेशानी हो सकती है। – CrashCodes

0

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

या फॉर्म पर एक पासवर्ड फ़ील्ड डालें। इस पर निर्भर करता है कि उन्हें सत्र में कितने फॉर्म भरना है।

0

जब उपयोगकर्ता फॉर्म पोस्ट करता है और उनका सत्र समाप्त हो गया है, तो आपको यह सुनिश्चित करना चाहिए कि आप फ़ॉर्म मानों को कहीं सेव करें और फिर उपयोगकर्ता को फिर से लॉगिन करने के लिए कहें। एक बार जब वे आपको पुनः प्रमाणित कर लेते हैं तो वे फॉर्म को फिर से जमा कर सकते हैं (क्योंकि उनके डेटा में से कोई भी खो नहीं जाएगा)।

1

टाइमआउट की निगरानी करें और उपयोगकर्ता को सूचित करने के लिए पॉप-अप पोस्ट करें कि उनका वर्तमान सत्र समाप्त हो जाएगा और "ठीक" या "रद्द करें" बटन पेश करेगा। सत्र जारी रखने के लिए ठीक है (यानी काउंटर को 5 मिनट या 10 मिनट तक रीसेट करें - जो कुछ भी आपको चाहिए) -या- सत्र को उलटी गिनती जारी रखने के लिए रद्द करें और इस प्रकार, समाप्त हो रहा है।
यह इसे संभालने के कई तरीकों में से एक है।

0

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

1

सत्र खोलने के लिए जावास्क्रिप्ट "थ्रेड" का उपयोग करना मेरे लिए एक बुरा विचार है।

यह सत्र समय समाप्ति के विचार के खिलाफ है जो कुछ संसाधनों को मुक्त करने के लिए मौजूद है यदि आवेदन के सामने कोई उपयोगकर्ता नहीं है।

मुझे लगता है कि आपको "सामान्य सामान्य उपयोग" में फ़ॉर्म भरने के लिए, अधिक सटीक समय के साथ सत्र टाइमआउट समायोजित करना चाहिए।

तुम भी द्वारा सक्रिय किया जा सकता है:

  1. एक गैर दखल उपयोगकर्ता के लिए चेतावनी (नहीं एक पॉपअप) प्रदर्शित करने के लिए JavaScript सतर्क होने से पहले का समय समाप्त, समय सीमा समाप्त हो जो कहना है कि सत्र शीघ्र समाप्त हो जाएगी (और टाइमआउट को रीसेट करने और उस चेतावनी को हटाने के लिए AJAX अनुरोध भेजने के लिए एक लिंक दें - जो उपयोगकर्ता को उस फॉर्म को खोने से बचाएगा जो वह वर्तमान में टाइप कर रहा है),
  2. और दूसरा जावास्क्रिप्ट "थ्रेड" भी है, जो सत्र में है समाप्त हो गया है, एक संदेश के साथ लॉगिन पेज पर रीडायरेक्ट कर रहा है कि सत्र अब समाप्त हो गया है।

ऐसा लगता है कि यह सबसे अच्छा है क्योंकि यह उपयोगकर्ता को कुछ भी जटिल फॉर्म भरने से बचता है, और जब उपयोगकर्ता चले गए तो मामले को संभालें।

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

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