2009-11-30 18 views
7

ile kalıcı olmayan tanımlama bilgisi oluşturma FormsAuthenticationTicket kullanarak kalıcı olmayan bir tanımlama bilgisi oluşturma konusunda sorun yaşıyorum. Kullanıcı bilgisini bilete kaydetmek istiyorum, bu yüzden FormsAuthentication.SetAuthCookie() veya FormsAuthentication.GetAuthCookie() yöntemlerini kullanamıyorum. Bu nedenle FormsAuthenticationTicket'i oluşturmalı ve bir HttpCookie'de saklamalıyım.FormsAuthenticationTicket

Benim kod şöyle görünür:

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); 

değişken isPersistent gerçek herşey yolunda çalışır ve çerez kalıcıdır zaman. Ancak, Persistent yanlış olduğunda, çerez zaten devam ediyor gibi görünüyor. Bir tarayıcı penceresinde oturum açıp kapatır, tarayıcıyı tekrar açar ve hala giriş yapmış olurum. Kurabayı kalıcı olmayan şekilde nasıl ayarlayabilirim?

Kalıcı olmayan bir çerez, oturum çerezi ile aynı mı? Çerez bilgileri sunucudaki oturumda saklı mı yoksa sunucuya her istekte/yanıtta aktarılan çerez mi?

cevap

3

deneyin silme:

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

:

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

... ve onunla değiştirme

İlgili konular