Ich bin ziemlich neu in MVC und vor kurzem wollte ich ein Login-Formular aus einem leeren MVC-Vorlage erstellen. Ich habe von Identity Class und Sessions gehört. Was ist der Unterschied zwischen diesen 2? Sollten sie gleichzeitig benutzt werden oder sind das verschiedene Dinge?Sitzungen in ASP.NET MVC
Antwort
In dieser relativ einfachen Frage ist viel los. Zuerst denke ich, dass du verstehen musst, was Sitzungen sind.
Das HTTP-Protokoll ist zustandslos. Das bedeutet, dass jede Anfrage ihre eigene Sache ist, unberührt von allem, was vorher passiert ist. Allerdings müssen die Anwendungen State, so dass das Konzept der Sitzungen eingeführt wurden. Eine Sitzung besteht aus einer Kombination von zwei Komponenten, einer serverseitigen und einer clientseitigen Komponente. Im herkömmlichen Sinne speichert der Server einige Daten in Kombination mit einer Sitzungs-ID. Es wird dann ein Cookie an den Client gesendet, der diese Sitzungs-ID enthält. Der Client sendet das Cookie bei der nächsten Anfrage zurück. Wenn der Server den Cookie sieht, verwendet er die Sitzungs-ID, die er enthält, um die Daten abzurufen, die er zuvor gespeichert hat.
Wenn es sich um etwas wie Authentifizierung handelt, muss der Status diese Authentifizierung zwischen den Anforderungen beibehalten. In einer MVC-Site werden Sitzungen zu diesem Zweck verwendet. Auf dem Client wird ein Cookie gesetzt, der vom Client bei jeder Anfrage zurückgeschickt wird. Der Server liest das Cookie, validiert die Authentifizierung und autorisiert den Benutzer. In einer Art Web API sind Sitzungen nicht erlaubt, daher muss die Authentifizierung vom Client bei jeder Anfrage weitergegeben werden, normalerweise in Form eines Headers, der etwa ein Bearer-Token enthält. Jede herkömmliche Website, die von einem durchschnittlichen Benutzer über einen Webbrowser geladen wird, behält jedoch die Authentifizierung über Sitzungen bei.
Jetzt gibt es in ASP.NET-Code ein statisches dynamisches Wörterbuch namens Session
. Dies verwendet das Konzept von Sitzungen, um den Status zwischen Webanforderungen zu erhalten, wird jedoch von keinem der Authentifizierungsmechanismen verwendet, die für ASP.NET-Sites verfügbar sind. Von der Verwendung von Session
wird abgeraten, da es in der Regel angemessener wäre, Daten beizubehalten, die Sie dort an einem besseren Ort wie einer Datenbank speichern würden. Es gibt bestimmte Bereiche, wo die Verwendung von Session
in Ordnung wäre, aber Sie sollten einen wirklich guten Grund dafür haben. Dies hat jedoch nichts mit Authentifizierung/Autorisierung zu tun.
Schließlich verfügen ASP.NET-Sites über eine Reihe verschiedener Authentifizierungssysteme, einige sind veraltet. In Bezug auf traditionelle Benutzerauthentifizierung haben Sie ASP.NET-Mitgliedschaft und Identität. Die Identität ist neuer und wird der ASP.NET-Mitgliedschaft (auch als FormsAuthentication bezeichnet) vorgezogen. Es ist jedoch nur für Websites verfügbar, die MVC 5 oder Core verwenden.
Lang und kurz, wenn Sie eine neue Website erstellen, die Authentifizierung benötigt, müssen Sie in ASP.NET Identity suchen. Es gibt Tonnen von examples and tutorials from Microsoft. Sie müssen möglicherweise Session
in Ihrer Anwendung verwenden, aber Sie sollten es so oft wie möglich vermeiden. Unabhängig davon, es ist völlig unabhängig von der Authentifizierung/Autorisierung, obwohl beide unter der Haube ähnliche Prinzipien verwenden.
- 1. NHibernate-kontextbezogene Sitzungen in ASP.NET MVC
- 2. Alternative zu Sitzungen? (asp.net mvc C#)
- 3. Sitzungen in MVC
- 4. mit Sitzungen in asp.net
- 5. Verwenden von Sitzungen MVC
- 6. MVC-Benutzeranmeldung und Sitzungen
- 7. Punkte zu Sitzungen in ASP.NET
- 8. ASP.NET MVC und Verwendung von Sitzungen ohne Cookies
- 9. Bessere Art der Durchführung stark typisierten ASP.NET MVC-Sitzungen
- 10. Erstellen einer Sitzung in ASP.NET MVC
- 11. PHP: Sitzungen in Sitzungen?
- 12. Warenkorb Sitzungsstatus erfolgt direkt in ASP.NET MVC
- 13. Spring Security, Spring MVC und Login-Sitzungen
- 14. ASP.Net MVC + statisch ConcurrentDictionary
- 15. ASP.Net VS ASP.Net MVC
- 16. ASP.NET MVC ohne ASP.NET?
- 17. HTML.Button in ASP.NET MVC
- 18. Suchformular in asp.net MVC
- 19. in asp.net MVC
- 20. LinkButton in ASP.NET MVC
- 21. ASCX in ASP.NET MVC
- 22. Summernote in Asp.Net MVC
- 23. Webhook in Asp.net MVC
- 24. Modellwarnungen in ASP.NET MVC
- 25. Zeitzonen in ASP.NET MVC?
- 26. Entitätsdiagramme in ASP.NET MVC
- 27. Identitätswechsel in ASP.NET MVC
- 28. Tabs in ASP.NET MVC
- 29. Ajax in Asp.net mvc
- 30. Asp.NET MVC in Unterordner
Sie möchten Tokens und nicht Sitzungen verwenden. Die Sitzung ist sehr veraltet. Werfen Sie einen Blick auf OAuth –
@SimonPrice: Was? Nichts davon macht irgendeinen Sinn. 'Session' ist nicht veraltet. Und ich habe keine Ahnung, welche "Tokens" hier im Zusammenhang stehen, Sitzungen sind ein Konzept, für das es keinen Ersatz oder Alternative gibt. HTTP ist zustandslos. Sie fälschen Zustand mit Sitzungen. So einfach ist das. –