2010-09-20 13 views
13

को नियंत्रित करना एक ASP.NET MVC2 एप्लिकेशन में, हम मानक लॉगिन कार्रवाई है ...FormsAuthentication createPersistentCookie समाप्ति

if (ValidateUser(model.Email, model.Password) 
{ 
    FormsAuthentication.SetAuthCookie(model.Email, model.RememberMe); 
    ... 

जहां SetAuthCookie को दूसरा पैरामीटर निम्नलिखित प्रलेखन के साथ createPersistentCookie है:

createPersistentCookie 
    Type: System.Boolean 
    true to create a persistent cookie 
    (one that is saved across browser sessions); otherwise, false. 

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

हम लगातार कुकी के लिए समाप्ति कैसे सेट करते हैं?

उत्तर

33

क्या आप ऐसा नहीं कर सकते?

<system.web> 
    <authentication mode="Forms"> 
      <forms timeout="20160"/> 
    </authentication> 
</system.web> 

टाइमआउट मिनटों में है।

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

दूसरे शब्दों में, यदि आप कार्य करें:

FormsAuthentication.SetAuthCookie(someMembershipName, false); 

कुकी समाप्त हो रही में परिणाम होगा जब:

  • उपयोगकर्ता ब्राउज़र बंद कर देता है, या
  • टाइमआउट पहुँच जाता है।

के रूप में यदि आप ऐसा करने का विरोध किया:

FormsAuthentication.SetAuthCookie(someMembershipName, true); 

कुकी केवल समाप्त हो रही है जब समय समाप्ति तक पहुँच जाता है का परिणाम देगा।

HTH

संपादित:

MSDN से ले:

टाइमआउट विशेषता इस प्रकार वर्णित है:

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

एएसपी.NET V1.1 के तहत नोट कुकीज़ समय-समय पर विशेषता नहीं है, भले ही टाइमआउट विशेषता की सेटिंग हो। हालांकि, एएसपी.NET V2.0, के रूप में लगातार कुकीज़ टाइमआउट विशेषता के अनुसार समय निकालती है।

दूसरे शब्दों में, यह समाप्ति सेटिंग केवल फॉर्म प्रमाणीकरण कुकी को ही संभालती है।

प्रपत्र प्रमाणीकरण कुकी क्लाइंट-साइड कुकी है, इसका आपके पास अन्य सर्वर-साइड सत्र (यानी एक शॉपिंग कार्ट) के साथ कुछ लेना देना नहीं है।

सत्र निम्न सेटिंग वाले समाप्त हो गई है कि:

<sessionstate 
     mode="inproc" 
     cookieless="false" 
     timeout="20" 
+0

मेरे समझ है कि इस समय समाप्ति को नियंत्रित करता है सत्र की समाप्ति है। हमारे सत्र टाइमआउट 2 घंटे के आदेश पर हैं। ऐसा नहीं है कि हम सत्र को दो हफ्तों तक चलाना चाहते हैं, बल्कि उस समय के लिए "मुझे याद रखें" कुकी को बनाए रखना चाहते हैं। – Rob

+0

फॉलो-थ्रू के लिए धन्यवाद। मैं फायरबग और सत्र की समाप्ति के साथ कुछ परीक्षण करूँगा और रिपोर्ट करूंगा। इस बीच, +1 और मैंने आपका जवाब स्वीकार कर लिया है। एक बार फिर धन्यवाद। – Rob

+0

@Rob: कोई चिंता नहीं, अगर आपको कोई जांच मिलती है (जैसा कि हम उपर्युक्त सेटिंग का उपयोग करते हैं और सभी परिदृश्यों में ठीक काम करने लगते हैं) – RPM1984

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