Best Practices für ASP.Net MVC-Cookies

8

Ich suche eine Anleitung in Bezug auf Cookies in ASP.Net MVC (oder einfach Cookie-Handling 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 Erwägung ziehen sollte?

Hier ist der aktuelle Code, den ich verwende, um das Authentifizierungsticket zu setzen und es in einen Cookie zu schreiben:

%Vor%     
Paul 27.07.2010, 20:42
quelle

3 Antworten

12

Faustregel: Speichern Sie im Cookie nur das Minimum (normalerweise ist dies die Benutzer-ID) und verwenden Sie dieses Minimum, um den Rest jedes Mal aus Ihrem Datenspeicher zu holen, wenn Sie ihn benötigen. Wenn Sie mit der Leistung zufrieden sind, können Sie aufhören zu lesen.

Wenn Sie feststellen, dass Ihr Datenspeicher zu viele Abfragen enthält, können Sie die Ergebnisse der Abfragen mit der Sitzung oder zwischenspeichern.

    
Darin Dimitrov 27.07.2010 21:27
quelle
2

Es gibt eine Größenbeschränkung dafür, wie groß ein Cookie sein kann, 4096 Bytes. Danach müssen Sie die Daten möglicherweise in mehrere Cookies aufteilen, wenn Sie weiterhin in Cookies speichern möchten. Offensichtlich haben Sie jetzt die zusätzliche Komplexität, alles zu lesen, um Ihr Authentifizierungsticket + Daten zu rekonstruieren, und wenn ein Cookie nicht mit dem Rest gesendet wurde, kann dies einige schlimme Folgen haben.

Haben Sie sich einen anderen Session Store angesehen? Das ist effektiv, was Sie hier verwenden, und wenn es nicht mit der Authentifizierung zusammenhängt und in der Verarbeitungspipeline verfügbar sein muss, bevor auf die Sitzung zugegriffen werden kann, würde ich geneigt sein, darauf zu achten, dies in die Sitzung zu bringen. Sie können einen Out-of-Process-Sitzungsspeicher wie eine Datenbank verwenden, wenn Sie die Sitzung nicht in Arbeit speichern möchten.

    
Russ Cam 27.07.2010 20:53
quelle
1

Sie sollten nur Authentifizierungsdaten in das Authentifizierungs-Cookie einfügen. Die Verwendung von Cookies in Asp.net ist ähnlich wie bei jeder anderen Programmierplattform für das Internet. Sie können beliebig viele Cookies einstellen und speichern, was Sie wollen. Einige Beispiele:

Ссылка

Ссылка

Ссылка

    
Marko 27.07.2010 20:55
quelle

Tags und Links