2010-05-18 13 views

Odpowiedz

7

Tak, możesz to zrobić. Trzeba wygenerować bilet uwierzytelniający ręcznie, zamiast pozwolić, aby framework wygenerował go automatycznie.

W zależności od roli użytkownika, daty ważności przypisanej do biletu.

This tutorial show how to generate the ticket manually.

+0

Dzięki! Idealny link. – 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

Bardzo jasne i pomocne! Dziękuję Ci! Jeśli używam przeciążenia FormsAuthenticationTicket otrzymującego tylko nazwę użytkownika ciągu znaków, bool IsPersitent i int timeout, czy też wykonam szyfrowanie i przypisanie do pliku cookie? –

+0

Rozumiem stąd: https://msdn.microsoft.com/en-us/library/w04e17xz(v=vs.100).aspx w uwagach, że FormsCookiePath jest ustawiany automatycznie, więc szyfrowanie itp. Będzie zrobił to samo. –

Powiązane problemy