2010-08-04 2 views
22

Ich verwende die FormsAuthenticationTicket und legen Sie die Daten und übergeben Sie die Daten über alle Seiten. und es funktioniert, wenn wir keine Daten ändern.Ändern Sie die Benutzerdaten in FormsAuthenticationTicket programmgesteuert

So, jetzt, wenn ich die Daten ändern und es für den Cookie übergeben und dann verschlüsseln möchte, wie Sie die Daten programmgesteuert ändern.

Bitte geben Sie mir die Lösung zum Ändern der Daten in HttpCookie programmgesteuert.

Antwort

44

Dies ist ein Beispiel dafür, wie ich ein bereits ausgestellte Formen Auth Ticket ändern:

HttpCookie cookie = FormsAuthentication.GetAuthCookie(Username, true); 
var ticket = FormsAuthentication.Decrypt(cookie.Value); 

// Store UserData inside the Forms Ticket with all the attributes 
// in sync with the web.config 
var newticket = new FormsAuthenticationTicket(ticket.Version, 
               ticket.Name, 
               ticket.IssueDate, 
               ticket.Expiration, 
               true, // always persistent 
               "User Data", 
               ticket.CookiePath); 

// Encrypt the ticket and store it in the cookie 
cookie.Value = FormsAuthentication.Encrypt(newticket); 
cookie.Expires = newticket.Expiration.AddHours(24); 
this.Context.Response.Cookies.Set(cookie); 
+0

ich will nur dann die Benutzerdaten ändern, wie es möglich ist? –

+1

Der gleiche Code, ändern Sie einfach den Wert "Benutzerdaten" auf Ihren Wert. Der Prozess (soweit ich es verstehe) ist der gleiche unabhängig. Holen Sie den Cookie, entschlüsseln Sie das Ticket, aktualisieren Sie es, verschlüsseln Sie es, setzen Sie den Cookie in der Antwort. – mdarnall

+0

Warum setzen Sie den Cookie-Ablauf auf 'newticket.Expiration.AddHours (24)' anstelle von 'newticket.Expiration'? –