2010-02-01 10 views
26

सत्र स्थिति टाइमआउट इस web.config तत्व का उपयोग सेट कर दिया जातामतभेद

<sessionState mode="InProc" cookieless="false" timeout="120" /> 

रूपों प्रमाणन इस web.config तत्व

<system.web> 
    <authentication mode="Forms"> 
    <forms loginUrl="Login.aspx" 
      protection="All" 
      timeout="30" 
      name=".ASPXAUTH" 
      path="/" 
      requireSSL="false" 
      slidingExpiration="true" 
      defaultUrl="default.aspx" 
      cookieless="UseDeviceProfile" 
      enableCrossAppRedirects="false" /> 
    </authentication> 
</system.web> 

क्या है का उपयोग कर कॉन्फ़िगर किया गया है इन तत्वों में से प्रत्येक में निर्दिष्ट टाइमआउट के बीच का अंतर? यदि दोनों अलग हैं, तो यह कैसे काम करेगा?

उत्तर

57

हर बार कोई नया उपयोगकर्ता वेबसाइट पर हिट करता है, भले ही वे अज्ञात हों या नहीं। सत्र के साथ प्रमाणीकरण बहुत कम है।

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

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

यदि सत्र से पहले प्रमाणीकरण का समय समाप्त हो जाता है, तो उनके सभी सत्र चर अभी भी मौजूद होंगे, लेकिन वे फिर से लॉग इन होने तक सुरक्षित संसाधनों तक पहुंच नहीं पाएंगे।

+5

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

+1

दरअसल, उत्कृष्ट स्पष्टीकरण। @learner की तरह, मैं [निष्क्रिय टाइम-आउट] के अलावा, एक और सेटिंग का उल्लेख करना चाहता हूं (http://technet.microsoft.com/nl-nl/library/cc771956%28v=ws.10%29.aspx): [ रीसाइक्लिंग कार्यकर्ता प्रक्रिया] (http://msdn.microsoft.com/en-us/library/aa720473%28v=vs.71%29.aspx)। डिफ़ॉल्ट रूप से, यह 2 9 घंटों के बाद होता है और यह _not_ एक स्लाइडिंग समाप्ति है। यदि आपका सत्र स्थिति मोड [प्रक्रिया में] है (http://msdn.microsoft.com/en-us/library/ms178586%28v=vs.100%29.aspx), रीसाइक्लिंग होने पर सत्र मिटा दिए जाएंगे। –

1

अपेक्षित के रूप में।

उदा। यदि आपका सत्र 20 मिनट के बाद समाप्त हो जाता है, तो आपका सत्र-चर खो जाएगा। लेकिन उपयोगकर्ता प्रमाणीकरण द्वारा संरक्षित पृष्ठों तक पहुंच सकता है।

यदि प्रमाणीकरण का समय समाप्त हो गया है, तो उपयोगकर्ता उस पृष्ठ तक नहीं पहुंच सका जो इसकी सुरक्षा करता है, और सत्र की स्थिति अप्रासंगिक है।

-3

सत्र टाइमआउट मान फ़ॉर्म प्रमाणीकरण टाइमआउट समय से छोटा होना चाहिए। क्योंकि कारण किसी कारण के कारण हटाया जा सकता है और परिदृश्य काम नहीं करेगा।

यदि सत्र का समय समाप्त हो गया है, तो फॉर्म प्रमाणीकरण टिकट की जांच करें। यदि टिकट वैध है और समय समाप्त नहीं है, तो अपने लॉगिन पेज पर सत्र फिर से उत्पन्न करें (आपकी वेब.कॉन्फिग फ़ाइल में परिभाषित फॉर्म के प्रमाणीकरण सेटिंग्स के loginUrl पैरामीटर के रूप में)।

यदि फॉर्म प्रमाणीकरण समय समाप्त हो जाता है, तो एएसपी.नेट फॉर्म प्रमाणीकरण स्वचालित रूप से लॉगिन पृष्ठ पर उपयोगकर्ता को रीडायरेक्ट करता है और उपयोगकर्ता को फिर से लॉगिन करना होता है।

भूलें कि फॉर्म प्रमाणीकरण स्वचालित रूप से उपयोगकर्ता को टिकट समय के समय लॉगिन पृष्ठ पर रीडायरेक्ट करता है।

  1. लॉगिन आवश्यक पृष्ठों के लिए एक BasePage.cs बनाएँ:

    वास्तव में मैं इस संरचना पसंद करते हैं।

  2. बेसपेज.cs में पेज_इनिट पर सत्र देखें। अगर सत्र समाप्त हो गया; उपयोगकर्ता को लॉगिन पेज पर रीडायरेक्ट करें।

    यदि (सत्र ["उपयोगकर्ता आईडी"] == शून्य) प्रतिक्रिया। रेडियोधर्मी ("login.aspx", सत्य);

  3. लॉगिन.एएसपीएक्स में पेज_लोड पर सत्र और फॉर्म प्रमाणीकरण टिकट समय ठीक से जांचें।

    //User already have a session; redirect user to homepage. 
        if (SessionHandler.UserId != 0) 
         Response.Redirect("HomePage.aspx"); 
        else 
        { 
         //Session is killed; check Ticket is Valid or not 
         if (Context.User.Identity != null && Context.User.Identity.IsAuthenticated) 
         { 
          //Use Value of the FormsAuthentication 
          var customDataToCheck = Context.User.Identity.Name; 
    
          //Use value to check user is exist really and check db for user's session 
          var user = CheckUserData(customDataToCheck); 
          if (user != null) 
          { 
           //Start Session here 
           SessionHandler.StartSession(user); 
    
           //Redirect user to page what you want. 
           Response.Redirect("HomePage.aspx?ref=regenerated_session"); 
          }      
         } 
        } 
    
  4. Login.aspx में कुकीज़ बनाने के लिए FormsAuthentication का उपयोग करें।

    यदि (उपयोगकर्ता नाम == "testuser" & & पासवर्ड == "testpassword") { // उपयोगकर्ता डेटा एक कुकी के लिए लिखा जाएगा, के लिए एक उपयोगकर्ता डेटा आप देख सकते हैं कि उपयोगकर्ता वैध है या नहीं की दुकान (उदाहरण उपयोगकर्ता नाम या उपयोगकर्ता आईडी)।
    सिस्टम.Web.Security.Forms प्रमाणीकरण.SetAuthCookie ("testUserData", keepMeSignedIncheckBox.checked); Response.Redirect ("HomePage.aspx"); }

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