2010-05-18 6 views

Répondre

7

Oui, vous pouvez le faire. Vous devrez générer le ticket d'authentification manuellement au lieu de laisser le framework le générer automatiquement. En fonction du rôle de l'utilisateur, l'expiration que vous attribuez au ticket.

This tutorial show how to generate the ticket manually.

+0

Merci! Lien parfait. – 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

Très clair et utile! Je vous remercie! Si j'utilise la surcharge FormsAuthenticationTicket ne recevant que le nom d'utilisateur de chaîne, bool IsPersitent et int timeout, est-ce que je ferais aussi le cryptage et assignerais à cookie? –

+0

Je comprends d'ici: https://msdn.microsoft.com/en-us/library/w04e17xz(v=vs.100).aspx dans les remarques, que le FormsCookiePath est réglé automatiquement et donc le cryptage, etc. fait de même. –

Questions connexes