2010-05-18 16 views

Respuesta

7

Sí, podrías hacer eso. Debería generar el ticket de autenticación manualmente en lugar de dejar que el framework lo genere automáticamente.

Dependiendo de la función del usuario, la caducidad que asigne al ticket.

This tutorial show how to generate the ticket manually.

+0

Gracias! Enlace perfecto. – Wyatt

6

fragmento:

 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

¡Muy claro y útil! ¡Gracias! Si utilizo la sobrecarga FormsAuthenticationTicket recibiendo solo string username, bool IsPersitent y int timeout, ¿también realizaría el cifrado y la asignación a cookie? –

+0

Entiendo desde aquí: https://msdn.microsoft.com/en-us/library/w04e17xz(v=vs.100).aspx en los comentarios, que FormsCookiePath se establece automáticamente y, por lo tanto, el cifrado, etc. hecho lo mismo –

Cuestiones relacionadas