2010-12-21 7 views
6

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

HttpCookie cookie = new HttpCookie("mycookie", "abc"); 
cookie.HttpOnly = true; //Seems to only affect script access 
cookie.Secure = true; //Seems to affect only https transport 

मेमोरी कुकी में प्राप्त करने के लिए मुझे कौन सी संपत्ति या विधि कॉल याद आ रही है?

उत्तर

2

यह प्रश्न ऑनलाइन 1000+ बार पोस्ट किया गया है। ब्राउज़र के साथ गैर-लगातार कुकीज़ टाइमआउट को संभालने का सबसे अच्छा तरीका टाइमआउट के लिए एक महत्वपूर्ण मान जोड़ना है। ब्राउज़र कोड संगतता के लिए उपयोगकर्ता आईडी कुंजी मान और एन्क्रिप्शन (शामिल नहीं) सुरक्षा में लॉग के लिए नीचे दिया गया कोड उपयोग किया जाता है। मैं फॉर्म प्रमाणीकरण का उपयोग नहीं करता हूं।

HttpCookie cookie = new HttpCookie(name); 
cookie.Values["key1"] = value; 
cookie.Values["key2"] = DateTime.Now.AddMinutes(70).ToString(); 
          //timeout 70 minutes with browser open 
cookie.Expires = DateTime.MinValue; 
cookie.Domain = ConfigurationManager.AppSettings["website_domain"]; 
System.Web.HttpContext.Current.Response.Cookies.Add(cookie); 

जब कुकी कुंजी मान उपयोग की जाँच:

try 
{ 

DateTime dateExpireDateTime; 
dateExpireDateTime = DateTime.Parse(HttpContext.Current.Request.Cookies[name]["key2"]); 

if (DateTime.Now > dateExpireDateTime) 
{ 
//cookie key value timeout code 
} 
else 
{ 
//reset cookie 
} 

catch 
{ 
//clear cookie and redirect to log in page 
} 

मैं रूपों प्रमाणीकरण और गूगल क्रोम का उपयोग कर संगतता के मुद्दों मिल गया है।

1

एएसपी.NET Session चर पर एक नज़र डालें। यह आपके ब्राउज़र के आधार पर जारी रहेगा और इसे "कुकीज" या हार्ड टाइमआउट के साथ सेट किया जा सकता है।

http://msdn.microsoft.com/en-us/library/h6bb9cz9%28VS.71%29.aspx

+0

यह वास्तव में मेरे सवाल से संबंधित नहीं है पर खो जाएगा। कल्पना करें कि सत्र अक्षम कर दिया गया था और मैं अभी भी एक एचटीपी कुकी बनाना चाहता हूं जो ब्राउज़र बंद हो जाता है/डिस्क पर लिखा नहीं जाता है, आदि। मुझे लगता है कि कुछ अन्य उत्तरों सही रास्ते पर हैं। – MatthewMartin

6
cookie.Expires = DateTime.MinValue; 

इस कुकी समाप्त हो जाएगी, जैसे ही ब्राउज़र बंद है।

7

ब्राउज़िंग सत्र समाप्त हो जाने के बाद स्पष्ट रूप से सेट की समाप्ति के बिना कुकीज़ स्वचालित रूप से दूर हो जाएंगी।

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

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

4

यदि आप कुकी सेट नहीं करते हैं। संपत्ति की खोज करें कुकी को ब्राउज़र सत्र के अंत में समाप्त होने के लिए सेट किया जाएगा।

2

कुकी करीब ब्राउज़र पर नहीं नष्ट हो सकता है अगरTaken from here

HttpCookie cookie = new HttpCookie(name); 
cookie.Value = value; 
cookie.Expires = Convert.ToDateTime(“12/12/2008″); //*difference is here*// 
Response.Cookies.Add(cookie);} 

कुकी करीब ब्राउज़र अगर

 HttpCookie cookie = new HttpCookie(name); 
    cookie.Value = value; 
    Response.Cookies.Add(cookie);} 
+0

पूरी तरह से सच नहीं है, फिर ब्राउज़र आधारित। इच्छा है कि ब्राउज़र एक साथ मिल जाएंगे और "जब ब्राउज़र सत्र समाप्त होता है" पर सहमति होगी। – GoldBishop

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