2012-03-23 4 views
1

In meiner Anmeldeseite Create FA Cookie.Wie Schlüssel-Wert-Paar auf FormAuthentication übertragen?

Ich möchte die userId hinzufügen.

ich dann auf meine Standard-Seite umleiten,

Wo ich die userId lesen möchten.

Ich benutze diese zwei Hilfsmethoden:

public static class NewWebHelpers 
{ 
    public static void CreateAuthCookie(string cookieName, string cookieValue) 
    { 
     //Get ASP.NET to create a forms authentication cookie (based on settings in web.config)~ 
     HttpCookie cookie = FormsAuthentication.GetAuthCookie(cookieName, false); 

     //Decrypt the cookie 
     FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie.Value); 

     //Create a new ticket using the details from the generated cookie, but store the username & 
     //token passed in from the authentication method 
     FormsAuthenticationTicket newticket = new FormsAuthenticationTicket(
     ticket.Version, ticket.Name, ticket.IssueDate, ticket.Expiration, 
     ticket.IsPersistent, cookieValue); 

     // Encrypt the ticket & store in the cookie 
     cookie.Value = FormsAuthentication.Encrypt(newticket); 

     // Update the outgoing cookies collection. 
     System.Web.HttpContext.Current.Response.Cookies.Set(cookie); 
    } 


    public static string ReadAuthCookie(string cookieName) 
    { 
     //Get ASP.NET to create a forms authentication cookie (based on settings in web.config)~ 
     HttpCookie cookie = FormsAuthentication.GetAuthCookie(cookieName, false); 

     //Decrypt the cookie 
     FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie.Value); 

     return ticket.UserData; 
    } 
} 

aber erhalten String.Empty anstelle des userId ich eintrat.

Warum?

Antwort

0

Sie erstellen einen neuen Authcookie mit FormsAuthentication.GetAuthCookie anstatt den zu lesen, der mit der Anfrage kommt. Versuchen Sie Folgendes:

public static string ReadAuthCookie(string cookieName) 
{ 
    HttpCookie cookie = 
     HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName]; 
    FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie.Value); 
    return ticket.UserData; 
}