2010-05-18 21 views
8

'daki role dayalı olarak auth cookie zaman aşımı süresini ayarlama Yöneticilerin normal kullanıcılardan daha uzun süre oturum açmasına izin vermek istiyorum. Çerez zaman aşımını programatik olarak veya rol tabanlı bir şekilde ayarlamak için bir kanca göremiyorum. ASP'de Form Kimlik Doğrulaması kullanılarak bu mümkün mü?ASP.NET

cevap

7

Evet, bunu yapabilirdiniz. Çerçevenin otomatik olarak oluşturmasına izin vermek yerine kimlik doğrulama biletini elle oluşturmanız gerekir.

Kullanıcı rolüne bağlı olarak, bilete atadığınız geçerlilik süresi.

This tutorial show how to generate the ticket manually.

+0

teşekkürler! Mükemmel bağlantı. – Wyatt

6

SNIPPET:

 switch Role: 
    Case A: VARIABLE X = Y; BREAK; 
    CASE B: VARIABLE X = Y2; BREAK; 
    .. 

    End switch 

    FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
     1, // Ticket version 
     Username.Value, // Username associated with ticket 
     DateTime.Now, // Date/time issued 
     DateTime.Now.AddMinutes(VARIABLE X), // Date/time to expire 
     true, // "true" for a persistent user cookie 
     reader.GetString(0), // User-data, in this case the roles 
     FormsAuthentication.FormsCookiePath);// Path cookie valid for 

    // Encrypt the cookie using the machine key for secure transport 
    string hash = FormsAuthentication.Encrypt(ticket); 
    HttpCookie cookie = new HttpCookie(
     FormsAuthentication.FormsCookieName, // Name of auth cookie 
     hash); // Hashed ticket 

    // Set the cookie's expiration time to the tickets expiration time 
    if (ticket.IsPersistent) cookie.Expires = ticket.Expiration; 

    Response.Cookies.Add(cookie); 
+0

Çok açık ve yardımsever! Teşekkür ederim! FormsAuthenticationTicket aşırı yükünü yalnızca dize kullanıcı adı alma, bool IsPersitent ve int zaman aşımını kullanırsam, şifrelemeyi ve tanımlama bilgisini atabilir miyim? –

+0

Buradan anlıyorum: https://msdn.microsoft.com/en-us/library/w04e17xz(v=vs.100).aspx, FormsCookiePath'in otomatik olarak ayarlanması ve böylece şifrelenmesi vb. aynısını yaptı. –