2009-11-30 10 views
7

के साथ गैर-लगातार कुकी बनाएं I FormsAuthenticationTicket का उपयोग कर एक गैर-लगातार कुकी बनाने में समस्या हो रही है। मैं टिकट में उपयोगकर्ता डेटा को स्टोर करना चाहता हूं, इसलिए मैं फॉर्म्स प्रमाणीकरण.SetAuthCookie() या FormsAuthentication.GetAuthCookie() विधियों का उपयोग नहीं कर सकता। इस वजह से मुझे फॉर्म प्रमाणीकरण टिकट बनाने और इसे HttpCookie में स्टोर करने की आवश्यकता है।फॉर्म्स प्रमाणीकरण टिकट

मेरे कोड इस तरह दिखता है:

DateTime expiration = DateTime.Now.AddDays(7); 

// Create ticket 
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(2, 
    user.Email, 
    DateTime.Now, 
    expiration, 
    isPersistent, 
    userData, 
    FormsAuthentication.FormsCookiePath); 

// Create cookie 
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket)); 
cookie.Path = FormsAuthentication.FormsCookiePath; 
if (isPersistent) 
    cookie.Expires = expiration; 

// Add cookie to response 
HttpContext.Current.Response.Cookies.Add(cookie); 

चर isPersistent सच सब कुछ काम करता है ठीक है और कुकी एक समान होती है जब। लेकिन जब पर्सिस्टेंट झूठा होता है तो कुकी को वैसे भी जारी रखा जाता है। मैं एक ब्राउज़र विंडो में साइन ऑन करता हूं, इसे बंद करता हूं और ब्राउजर को फिर से खोलता हूं और मैं अभी भी लॉग इन हूं। मैं कुकी को लगातार कैसे स्थापित करूं?

एक गैर-लगातार कुकी एक सत्र कुकी के समान है? क्या कुकी जानकारी सर्वर पर सत्रडेटा में संग्रहीत है या सर्वर के हर अनुरोध/प्रतिक्रिया में कुकी को स्थानांतरित किया गया है?

उत्तर

3

कोशिश हटाने:

if (!isPersistent) { cookie.Expires = DateTime.Now.AddYears(-1); }

:

if (isPersistent) { cookie.Expires = expiration; }

... और इसकी जगह