FWIW sehr vorsichtig sein mit unverschlüsselten so etwas wie ein Benutzer-ID in einem Cookie gespeichert werden. Dadurch ist Ihre Website sehr anfällig für Cookie-Vergiftungen, bei denen Benutzer leicht einen anderen Benutzer annehmen können. Wenn Sie so etwas in Betracht ziehen, empfehle ich Ihnen, den Cookie für die Formularauthentifizierung direkt zu verwenden.
bool persist = true;
var cookie = FormsAuthentication.GetAuthCookie(loginUser.ContactId, persist);
cookie.Expires = DateTime.Now.AddMonths(3);
var ticket = FormsAuthentication.Decrypt(cookie.Value);
var userData = "store any string values you want inside the ticket
extra than user id that will be encrypted"
var newTicket = new FormsAuthenticationTicket(ticket.Version, ticket.Name,
ticket.IssueDate, ticket.Expiration, ticket.IsPersistent, userData);
cookie.Value = FormsAuthentication.Encrypt(newTicket);
Response.Cookies.Add(cookie);
Dann können Sie diese jederzeit von einer ASP.NET-Seite lesen von
string userId = null;
if (this.Context.User.Identity.IsAuthenticated)
{
userId = this.Context.User.Identity.Name;
}
Das Lesen des dauerhaften Cookie-Codes funktionierte nicht für mich. Siehe meine Antwort in diesem Post. –
Ihr Code unterscheidet sich funktional nicht von dem, der in der ursprünglichen Frage gepostet wurde, außer dass Ihr Cookie in 12 Stunden abläuft und OP's in einem Jahr. – Ortund
Dieser Cookie ist nicht dauerhaft, wenn der Client den Browser schließt, wird der Cookie verschwinden. Die Frage ist, wie man ein hartnäckiges Plätzchen, anstatt ein 'Sitzung' Plätzchen schreibt. – Felype