2011-06-08 11 views
12

मैं अपने खुद के प्रमाणीकरण टिकट बनाने हूँ निम्नलिखित कोड का उपयोग कर रपट:ASP.NET प्रमाणीकरण समाप्ति कस्टम के टिकट पर समय

string formsCookieStr = string.Empty; 
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
      1,        // version 
      username,      // user name 
      DateTime.Now,     // issue time 
      DateTime.Now.AddMinutes(30), // expires 
      false,       // Persistence 
      userRoleData     // user data 
    ); 
formsCookieStr = FormsAuthentication.Encrypt(ticket); 
HttpCookie FormsCookie = new HttpCookie(FormsAuthentication.FormsCookieName, formsCookieStr); 
HttpContext.Response.Cookies.Add(FormsCookie); 

मैं समाप्ति एक रपट समाप्ति होना चाहते हैं - हर बार ग्राहक तो एक अनुरोध भेजता है समाप्ति 30 मिनट तक रीसेट की जानी चाहिए। हालांकि, जब मैं उपयोगकर्ता पहली बार लॉग इन करता हूं तो मैं केवल टिकट बना रहा हूं। क्या एएसपी.NET स्वचालित रूप से मेरे लिए समाप्ति समय स्लाइडिंग करेगा, या क्या मुझे स्लाइडिंग समाप्ति को लागू करने के लिए कुछ 'मैन्युअल' करने की आवश्यकता है?

उत्तर

10

यह web.config के forms अनुभाग में कॉन्फ़िगर किया गया है। जिस तरह से फिसलने समाप्ति काम करता है कि प्रत्येक अनुरोध पर ASP.NET इंजन टाइमआउट incrementing द्वारा प्रमाणीकरण कुकी का पुनर्लेखन है:

<authentication mode="Forms"> 
    <forms 
     loginUrl="~/Account/LogOn" 
     timeout="2880" 
     slidingExpiration="true" 
    /> 
</authentication> 

नोट तथापि कि रपट समाप्ति को सक्षम करने चीजों ASP.NET Security Practices में बुरा व्यवहार के रूप में माना जाता है।

+2

धन्यवाद। लेकिन निश्चित रूप से डिफ़ॉल्ट जब कस्टम टिकट का उपयोग नहीं कर रहे हैं तो समाप्ति स्लाइडिंग हो रही है, अन्यथा उपयोगकर्ता अंतिम लॉग इन करने के बावजूद लॉग आउट हो जाएगा? मैं इस व्यवहार का पालन नहीं करता, और दस्तावेज़ कहते हैं कि स्लाइडिंग समाप्ति डिफ़ॉल्ट है। क्या मैं अपने कस्टम टिकट के साथ डिफ़ॉल्ट रूप से समाप्ति की समाप्ति कर रहा हूं? (मेरे पास web.config में कोई स्लाइडिंग अपवाद सेटिंग नहीं है) – Journeyman

+11

"समाप्ति कार्य स्लाइडिंग का तरीका यह है कि प्रत्येक अनुरोध पर एएसपी.नेट इंजन टाइमआउट को बढ़ाकर प्रमाणीकरण कुकी को फिर से लिखता है" ... पूरी तरह से सच नहीं है, क्योंकि एएसपीनेट केवल पुनः लिखता है प्रमाणीकरण टिकट अगर आधे से अधिक टाइमआउट मान पास हो गया है। http://weblogs.asp.net/rajbk/archive/2004/10/11/241080.aspx – BrazenTongue

+0

@ ब्राज़नटोंगू - यह लिंक फरवरी 2017 तक मर चुका है, क्या प्रतिस्थापन प्रदान करना संभव होगा? – user3256944

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