2013-07-23 28 views
104

मेरे पास कोड है जो मैं वेबसाइट के सत्र समय बहिष्कारों के बारे में देख रहा हूं। Web.config में मैं इस कोड में आया था।फॉर्म प्रमाणीकरण टाइमआउट बनाम सत्रस्टेट टाइमआउट

<authentication mode="Forms"> 
    <forms loginUrl="~/Auth/SignOn.aspx" timeout="40" slidingExpiration="true" /> 
</authentication> 

<sessionState timeout="30" /> 

क्या किसी को पता है कि कोई दूसरे पर उदाहरण लेता है, और वे अलग कैसे हैं। धन्यवाद।

+0

की संभावित डुप्लिकेट [फॉर्म्स प्रमाणीकरण समय समाप्त बनाम सत्र का समय समाप्त] प्रतिवाद करने लगता है के लिए भेजता है के लिए देखें (http: // stackoverflow।कॉम/प्रश्न/1470777/फॉर्म-प्रमाणीकरण-टाइमआउट-बनाम सत्र-टाइमआउट) –

उत्तर

173

वे अलग बातें हैं:

यहाँ एक सभ्य प्रतिक्रिया है कि आपके सवाल का जवाब कर सकते हैं या कम से कम सही दिशा में है। प्रपत्र प्रमाणीकरण टाइमआउट मान प्रमाणीकरण कुकी मान्य होने के लिए मिनटों की मात्रा निर्धारित करता है, जिसका अर्थ है कि value मिनटों की संख्या के बाद, कुकी समाप्त हो जाएगी और उपयोगकर्ता को अब प्रमाणीकृत नहीं किया जाएगा - उन्हें रीडायरेक्ट किया जाएगा स्वचालित रूप से लॉगिन पेज-। slidingExpiration=true मान मूल रूप से कह रहा है कि प्रत्येक अनुरोध के बाद, टाइमर रीसेट हो जाता है और जब तक उपयोगकर्ता टाइमआउट मान के भीतर अनुरोध करता है, तब तक वे प्रमाणीकृत रहेंगे। यदि आप slidingExpiration=false सेट करते हैं तो प्रमाणीकरण कुकी value मिनटों की संख्या समाप्त हो जाएगी, भले ही उपयोगकर्ता टाइमआउट मान के भीतर अनुरोध करता हो या नहीं।

SessionState टाइमआउट मान किसी विशेष सत्र के लिए सत्र स्थिति प्रदाता को स्मृति (या जो भी बैकिंग स्टोर का उपयोग किया जा रहा है, SQL सर्वर, OutOfProc, आदि) को डेटा रखने की आवश्यकता होती है। उदाहरण के लिए, यदि आप अपने उदाहरण में मान का उपयोग करके सत्र में ऑब्जेक्ट डालते हैं, तो यह डेटा 30 मिनट के बाद हटा दिया जाएगा। उपयोगकर्ता को अभी भी प्रमाणित किया जा सकता है लेकिन सत्र में डेटा अब मौजूद नहीं हो सकता है। प्रत्येक अनुरोध के बाद Session Timeout मान हमेशा रीसेट किया जाता है।

+20

एक स्पष्टीकरण: फ़ॉर्म प्रमाणीकरण टाइमआउट [टिकट] के लिए समाप्ति समय निर्धारित करता है (http://msdn.microsoft.com/en-us/ लाइब्रेरी/system.web.security.formsauthenticationticket.aspx) कुकी के लिए आवश्यक नहीं है जहां टिकट संग्रहीत किया जा सकता है। कुकी में कोई समाप्ति समय नहीं हो सकता है (भ्रमित रूप से एक सत्र कुकी कहा जाता है, जिसका अर्थ है कि यह तब तक रहता है जब तक कि उपयोगकर्ता ब्राउज़र बंद नहीं कर लेता), या यहां तक ​​कि कुकी भी नहीं हो सकती है ("कुकीज" फॉर्म प्रमाणीकरण)। एक सतत कुकी के मामले में, प्रपत्र प्रमाणीकरण कुकी समाप्ति और एक ही समय में टिकट की समाप्ति सेट करता है। – bmode

+1

जो स्मृति से सत्र डेटा साफ़ करते हैं .... क्या आईआईएस या एएसपी.Net इंजन या सीएलआर है? – Mou

+9

एमएसडीएन से एक और स्पष्टीकरण: "समझौता किए गए प्रदर्शन को रोकने के लिए, और कुकी चेतावनियों को चालू करने वाले उपयोगकर्ताओं के लिए कई ब्राउज़र चेतावनियों से बचने के लिए, कुकी अद्यतन की जाती है जब निर्दिष्ट समय के आधे से अधिक समय बीत चुका है।" तो कुकी टाइमआउट केवल आधा खत्म होने पर रीसेट हो जाता है। इसलिए सत्र समय समाप्ति पर इसे 2x पर सेट करने का सुझाव। – user917170

16

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

5

अंतर एक (फार्म का समय समाप्त) उपयोगकर्ता और अन्य (सत्र टाइमआउट) के सत्यापन के साथ क्या करना है कि कब तक संग्रहित डेटा सर्वर पर संग्रहीत किया जाता है के साथ क्या करना है। तो वे बहुत स्वतंत्र चीजें हैं, इसलिए किसी को दूसरे पर प्राथमिकता नहीं लेती है।

13

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

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

उदाहरण https://support.microsoft.com/de-ch/kb/910439/en-us या https://itworksonmymachine.wordpress.com/2008/07/17/forms-authentication-timeout-vs-session-timeout/

+1

आप सही हैं। – user917170

2
 <sessionState timeout="2" /> 
     <authentication mode="Forms"> 
      <forms name="userLogin" path="/" timeout="60" loginUrl="Login.aspx" slidingExpiration="true"/> 
     </authentication> 

यह विन्यास मुझे प्रवेश पृष्ठ हर दो मिनट है, जो पहले जवाब

+1

यह तब हो सकता है जब लॉगिन संबंधित जानकारी सत्र चर में संग्रहीत होती है और जब यह साफ़ हो जाती है, तो यह लॉगिन पर रीडायरेक्ट होती है। तो यह कोड पर निर्भर करता है? – Steve

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