Ich habe eine Asp.Net Core RC2-Anwendung und ich habe Probleme mit der Authentifizierung von Cookies. In startup.cs Datei habe ich eine Basiskonfiguration:Cookie-Schlüssel im Speicher gespeichert, kann nicht wechseln Server
app.UseIdentity();
app.UseCookieAuthentication();
Ich bin nicht EntityFramework verwenden, weil ich eine documental Datenbank bin mit, für die ich Identität Schnittstellen IUserStore und IRoleStore umgesetzt.
Wenn ich mich bei debug in localhost anmelde, auch wenn ich persistente Cookies setze, bleiben sie gültig, bis ich die Anwendung herunterfahre. Wenn ich neu starte, sind die Cookies abgelaufen und der Server leitet mich zur Anmeldeseite um. Das sagt mir, dass die Schlüssel des Kekses im Gedächtnis bleiben. Warum speichert es keine Schlüssel in den Profildatensätzen des Benutzers in db? Cookies funktionieren, bis die Anwendung am Leben erhalten wird.
Dies ist ein Problem, wenn ich die Anwendung auf dem Produktionsserver bereitstellen. Ich verwende eine Produktions-/Staging-Lösung und habe festgestellt, dass alle angemeldeten Benutzersitzungen ablaufen, wenn ich die Anwendung im Staging-Modus austrage und die Server wechseln. Das ist ein großes Problem. Ich kann den Schlüssel auch nicht in einem lokalen Verzeichnis teilen, wie von https://docs.asp.net/en/latest/security/data-protection/compatibility/cookie-sharing.html vorgeschlagen, weil zwei Server unterschiedlich sind. Wie kann ich lösen?
Sind Sie besorgt, dass Menschen würden abgemeldet werden, wenn Sie auf eine neue Maschine migrieren? Warum? –
Denn mit einer agilen Entwicklung könnte ich auch wie jeden Tag die Maschine wechseln – tmm360
Irgendeinen Grund, warum ** Sie nicht ** verteilte Speichercache verwenden können, wie redis? Die Redis-Unterstützung kommt mit ASP.NET Core aus der Box, Sie brauchen nur einen Redis-Cluster und fügen das Paket zu Ihrer Anwendung hinzu und rufen die Startup-Klasse 'AddRedisCache()' auf, bevor Ihre Autorisierungs-Middleware registriert wird? Dadurch speichern Ihre Apps ihre Werte in Redis und nicht im Standard InMemoryCache. – Tseng