Ich suche nach Anleitungen zu Cookies in ASP.Net MVC (oder einfach nur zur Cookie-Handhabung im Allgemeinen). Ich habe Authentifizierungsinformationen über Benutzer gespeichert, die sich über ein Formular-Login in einem Cookie authentifizieren. Das funktioniert großartig, aber ich muss jetzt ein wenig mehr Informationen im Cookie speichern. Diese zusätzlichen Informationen sind nicht wirklich "authentifizierungsbezogen", daher zögere ich, sie im Authentifizierungsticket zu speichern. Gibt es eine bessere Vorgehensweise zum Speichern zusätzlicher Informationen? Ist es möglich, mehrere Cookies zu setzen (und wenn ja, ist das eine gute/schlechte Praxis)? Andere Dinge, die ich hier in Betracht ziehen sollte?Best Practices für ASP.Net MVC-Cookies
Hier ist der aktuelle Code Ich bin mit dem Authentifizierungsticket setzen und es in einem Cookie wickeln:
private HttpCookie GetAuthCookie(AuthToken authToken)
{
var authTokenXml = serializationService.Serialize(authToken);
var authCookieString = FormsAuthentication.Encrypt(
new FormsAuthenticationTicket(
0,
Keys.AuthToken,
DateTime.Now,
DateTime.Now.AddMinutes(AppSettings.SessionTimeoutMinutes),
true,
authTokenXml));
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, authCookieString)
{
Expires = DateTime.Now.AddDays(AppSettings.AuthCookieExpireDays)
};
return cookie;
}
Ja, ich habe erwogen, den SQL Server-Sitzungsstatus als Alternative zum Cookie-Ansatz zu verwenden. Die zusätzlichen Daten, die ich speichern muss, sind klein (wahrscheinlich 20 Zeichen), daher sollte es nicht zu viel Overhead auf der Leitung oder in Bezug auf die Cookie-Größe hinzufügen. Ich hoffte irgendwie zu vermeiden, eine Datenbank zu verwenden, nur um diese zusätzlichen Informationen zu speichern, es sei denn, es ist wirklich die bessere Praxis, und deshalb habe ich die Frage hier gestellt. Vielen Dank für Ihr Feedback. – Paul
Wenn es nur 20 Zeichen sind, schadet es wahrscheinlich nicht im Cookie. Wenn es so klein ist, könnte die Verwendung der in-proc-Sitzung auch gut passen. Vielleicht versuchen beide Wege und sehen, was vorzuziehen ist? –