2013-02-17 24 views
6

ASP.NET MVC kullanıyorum ve siteye döndüklerinde (bu sitenin yaptığı gibi) otomatik olarak oturum açabilmek istiyorum.Kalıcı çerez son eki asp.net mvc'de Session olarak ayarlandı mı?

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
    1, 
    "playerid", 
    DateTime.Now, 
    DateTime.Now.AddMinutes(1), //This will be set to a longer period in live... 
    true, 
    Username + "|" + item.PlayerID.ToString(), 
    FormsAuthentication.FormsCookiePath); 

string encTicket = FormsAuthentication.Encrypt(ticket); 
Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket)); 

Ben bir kullanıcı olarak giriş yaparak bu test edebilir ve ardından Firebug yılında Cookies sekmesine ardından sona erme ayarlanır bakarsak şu şekildedir: I Bir kullanıcı ilk kayıtları veya günlükleri çerez bırakır

Session. Tarayıcıyı kapatıp siteme geri dönersem, artık giriş yapmıyorum. Bu, oturum kapatıldığında, tarayıcı kapanırken beklediğim şeydir (ancak olmasını istediğim şey bu değil!).

Ancak, siteye giriş yapıp siteyi dolaşırsam, bir dakika geçtikten sonra sona erme süresi Session olarak gösterilmez, ancak gerçek bir tarih damgası olarak görünür. Daha sonra tarayıcıyı kapatıp siteme geri dönersem otomatik olarak oturum açmış olurum.

Özet olarak, son kullanma tarihim Session olarak ayarlanmış gibi gözüküyor. Bu durumda) ve sitede aktif oldum (sürgülü son kullanma tarihi kullanıyorum).

Son kullanma süremi, FormsAuthentication biletinde belirttiğim (ve Session olarak gösterilmiyor) olarak ayarlayabileceğim herhangi bir fikir var mı?

cevap

9

Sen Expires özelliğini ayarlayarak müşteri sabitdisk üzerinde depolanan bir persistent cookie oluşturmalısınız:

var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket) 
{ 
    // setting the Expires property to the same value in the future 
    // as the forms authentication ticket validity 
    Expires = ticket.Expiration 
}; 
Response.Cookies.Add(cookie); 

çerezden ve form kimlik doğrulama bileti için aynı sona erme zaman aşımı belirtilen emin olun. Eğer FireBug ile baktığınızda Şimdi çerez Expires özellik ileride ayarlanırken yayılan olduğunda çerez kalıcı kılmak ve tarayıcıyı hayatta hangi göreceksiniz yeniden:

Set-Cookie: ASPXAUTH=...; Expires=Tue, 15-Jan-2014 21:47:38 GMT; Path=/; HttpOnly 
+0

Vay! Bu mükemmel çalışıyor. Bu siteyi çok seviyorum! Teşekkürler Darin –

+0

Çerez ve bilet arasındaki farkı anlamak için, bu hızlı bir bakış http://support.microsoft.com/kb/910443?wa=wsignin1.0 –

+0

Bağlantı için teşekkürler. Bu daha iyi anlamama yardımcı olur. –

İlgili konular