2009-04-02 11 views
6

मुझे अपनी परियोजनाओं में से एक में ऑटो-लॉगआउट कार्यक्षमता लागू करना है और मैं सिर्फ यह नहीं समझ सकता कि विचारों की तलाश शुरू करना है, लेकिन SOAsp.net: ऑटो-लॉगआउट कार्यक्षमता कार्यान्वित करना

यदि उपयोगकर्ता सत्र समाप्त हो गया है तो उपयोगकर्ता को लॉगिन पृष्ठ पर रीडायरेक्ट करने के लिए एप्लिकेशन की आवश्यकता है। कृपया मुझे बताएं कि इस आवश्यकता से निपटने के लिए मेरा दृष्टिकोण क्या होना चाहिए।

समस्या कथन: उपयोगकर्ता किसी भी लॉग-इन उदाहरण में एक से अधिक n मिनट के लिए छोड़ देता है प्रणाली तो प्रणाली स्वत: उन्हें बंद लॉग इन करना चाहिए।

उत्तर

6

यह निम्नलिखित तरीके से हासिल किया गया है:

1) एक सत्र वर में सर्वर के लिए हर अनुरोध (सर्वर और ajax सत्र की जांच ajax अनुरोध को छोड़कर) के समय स्टाम्प की बचत करें।

2) सर्वर को जेएस फ़ंक्शन के माध्यम से लगातार अंतराल पर AJAX का उपयोग करके मतदान करें और जांचें कि सत्र समय-टिकट और AJAX अनुरोध समय के बीच का समय सत्र समय समाप्ति वैल से अधिक है, तो वर्तमान उपयोगकर्ता को लॉग-ऑफ करें और उस अजाक्स अनुरोध के लिए एक बूल वापस करें।

3) वर्तमान पृष्ठ को लॉगिन पृष्ठ पर रीडायरेक्ट करें यदि बूल लौटाया गया है तो सत्य है।

+2

लोगों को इस पर समय बिताने के लिए इसे जवाब के रूप में चिह्नित करना चाहिए –

1
+0

मुझे पता है कि सत्र सत्र क्या है जब मैं उपयोगकर्ता को लॉगिन पृष्ठ पर रीडायरेक्ट करना चाहता हूं! – renegadeMind

+0

आपने पूरे पृष्ठ को नहीं पढ़ा, हुह! उपरोक्त लिंक में 'नमूना सत्र राज्य एप्लिकेशन' अनुभाग पढ़ें। 'चेकसेशन' विधि को संशोधित करें, और लाइन 'span1.InnerHtml = "कुछ भी नहीं, सत्र डेटा खोएं!" - अपने पृष्ठ पर पुनर्निर्देशन के लिए कोड जोड़ें। – sangupta

0

पर MSDN दस्तावेज़ीकरण पढ़ें जब से तुम जहां शुरू करने के लिए पता नहीं है, आप पा सकते हैं इस लेख उपयोगी 4guys: http://www.4guysfromrolla.com/webtech/110701-1.shtml

संपादित

jQuery timer की तरह लगता है हो सकता है उपयोगी है यदि आप किसी ज्ञात अवधि के बाद यूआरएल पर रीडायरेक्ट करना चाहते हैं (यानी आपका सत्र समाप्ति अवधि)।

उम्मीद है कि इससे मदद मिलती है।

+0

मुझे पता है प्रमाणीकरण काम करता है; मेरी मदद करने के लिए कैसे? कृपया समझें कि उपयोगकर्ता उस साइट से बातचीत नहीं करेगा और ऐप अभी भी सत्र समाप्त होने पर लॉगिन पृष्ठ पर रीडायरेक्ट करेगा! यह एक ग्राहक पक्ष की बात होगी! – renegadeMind

+0

शायद उन लोगों को स्पष्ट करने के लिए अपने प्रश्न को दोबारा लिखने पर विचार करें जो आपकी मदद करने में समय बिताने के इच्छुक हैं। –

+0

अच्छी तरह से मैंने सोचा कि शब्द ऑटो-लॉगआउट स्वयं व्याख्यात्मक था; अनुमान है कि यह नहीं है! – renegadeMind

14

टिप्पणियों पर जितना अधिक सवाल है, मुझे यकीन नहीं है कि आप कुछ ऐसा करने के बाद हैं जो गतिविधि के बावजूद उपयोगकर्ता को लॉग इन करेगा या निष्क्रियता की अवधि के बाद ही लॉग आउट करेगा।

आप मानक ASP.NET mechanisms उपयोग करने के लिए खुश हैं, तो यह किसी भी बड़े काम के बिना आप के लिए किया जा सकता है:

अपने membership provider सेट करें।

सुनिश्चित करें कि आपका authentication section एक loginUrl परिभाषित करता है:

<authentication mode="Forms"> 
    <forms loginUrl="login.aspx" /> 
</authentication> 

आप forms element पर "समय समाप्ति" विशेषता का उपयोग डिफ़ॉल्ट 30 मिनट के अलावा किसी अन्य समाप्ति सेट कर सकते हैं:

<authentication mode="Forms"> 
    <forms loginUrl="login.aspx" timeout="15"/> 
</authentication> 

यह प्रवेश करेंगे आपकी साइट पर 15 मिनट की निष्क्रियता के बाद उपयोगकर्ता (या तो ब्राउजर के साथ जावास्क्रिप्ट "दिल की धड़कन" के साथ खुला रहता है या यदि वे किसी अन्य साइट पर 15 मिनट खर्च करते हैं)।

गुमनाम उपयोगकर्ताओं

<authorization> 
    <deny users="?" /> 
</authorization> 

में पहुंचने से रोका तो है कि अपनी प्रवेश, पंजीकरण और संभवतः पासवर्ड भूल पृष्ठों सभी उपयोगकर्ताओं के लिए सुलभ हैं location Element:

<location path="Logon.aspx"> 
    <system.web> 
    <authorization> 
     <allow users="?"/> 
    </authorization> 
    </system.web> 
</location> 
<location path="Register.aspx"> 
    <system.web> 
    <authorization> 
     <allow users="?"/> 
    </authorization> 
    </system.web> 
</location> 
<!-- etc --> 

इस तरह का उपयोग कर प्रमाणीकरण, जब किसी उपयोगकर्ता की सुनिश्चित कुकी समाप्त हो जाती है, उन्हें आपके फॉर्म पेज के loginUrl तत्व में निर्दिष्ट यूआरएल पर रीडायरेक्ट किया जाएगा।


आप मानक ASP.NET तंत्र का उपयोग नहीं कर रहे हैं, तो आप शायद एक "आधार पेज" प्रकार मॉडल को लागू बेहतर होगा।

System.Web.UI.Page से विरासत में मिली एक नई कक्षा बनाएं जो उपयोगकर्ता की लॉगिन स्थिति की जांच करेगी, और यदि वे लॉग इन/टाइम आउट नहीं हैं तो उन्हें अपने लॉगिन पेज पर रीडायरेक्ट करें।

सिस्टम वेब.यूआई.पेज से विरासत के बजाय, लॉक होने वाले पृष्ठों में, आप अपने बेस पेज क्लास से प्राप्त होते हैं (इस तरह के सेटअप का उदाहरण कुछ समान करने के लिए - प्रत्येक पर सेटिंग सेट करना पेज) my answer here


आपका प्रवेश पृष्ठ में देखा जा सकता शायद iFrame के बाहर वापस कूदने के लिए कुछ उस में जे एस पर्दाफाश फ्रेम की आवश्यकता होगी:

if (top!=self.parent){ 
    top.location=self.parent.location; 
} 

या आप कह रहे हैं कि "बैक" दबाकर वे अब भी आपके पृष्ठों को ब्राउज़र कैश के माध्यम से देख सकते हैं? जो मामले में आप हर पृष्ठ पर कैश हेडर के साथ चारों ओर खेलने की आवश्यकता होगी:

Response.Cache.SetCacheability(HttpCacheability.NoCache); 

ठीक है, ठीक है, उस मामले में आप भी एक जे एस टाइमर वस्तु एक स्थान प्रदर्शन करने के लिए की आवश्यकता होगी। अपने प्रवेश पृष्ठ पर बदलें - यह प्रत्येक पृष्ठ पर एक उपयोगकर्ता नियंत्रण में (बेहतर अभी तक आपके मास्टर पृष्ठ में या,) स्वचालित रूप से n मिनट के बाद उपयोगकर्ता रीडायरेक्ट करने के लिए:

<script type="text/javascript"> 
    setTimeout('location.Replace("/login.aspx")', 900000); 
</script> 

समय मिलीसेकंड में है, इसलिए इस वसीयत उन्हें 15 मिनट में ले जाएं, और उसके लिए बस पूरे jQuery ढांचे को पाने की आवश्यकता नहीं है।

तुम भी मेटा रिफ़्रेश टैग में देखना चाहते हो सकता है:

<meta http-equiv="refresh" content="900;url=http://example.com/login.aspx" /> 

कौन सा ब्राउज़र 15 मिनट के बाद प्रवेश पृष्ठ पर ताज़ा करने के लिए बाध्य करेगा (यह एक के सेकंड में)।

+0

यह मेरा प्रो कथन है: यदि उपयोगकर्ता किसी दिए गए लॉग-इन उदाहरण में सिस्टम को एन मिनट से अधिक समय तक छोड़ देता है, तो सिस्टम को स्वचालित रूप से उन्हें लॉग आउट करना चाहिए। मुझे खेद है कि सवाल पूछा गया था सही ढंग से तैयार नहीं किया गया था। – renegadeMind

+0

यदि आप फॉर्म प्रमाणीकरण का उपयोग कर रहे हैं, तो टाइमआउट विशेषता को "n" मिनट पर सेट करें, और उनके ऑथ टोकन निष्क्रियता के "n" मिनटों के बाद समाप्त हो जाएंगे - या तो ब्राउज़र विंडो खुल जाएगी, या वे उस समय के लिए किसी अन्य साइट पर घूमते रहेंगे । –

+0

मैंने टाइमआउट सेटिंग को शामिल करने के लिए कुछ विवरण जोड़े हैं, साथ ही पृष्ठों के लिए कैश हेडर को संशोधित करने की संभावना के बारे में बात भी की है। –

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