2016-02-12 5 views
8

Ich habe ein Problem mit einem "Remember me" -Stil-Kontrollkästchen in einem MVC6-Projekt. Ich hatte eine related question here, die das Problem für das Debugging auf meinem localhost löste, aber nach der Bereitstellung des Projekts in unserer Entwicklungsumgebung zwingt es mich immer noch, sich nach 20 Minuten erneut einzuloggen.ASP.Net 5 Identität beibehalten Authentifizierung funktioniert nicht IIS 7.5 Leerlauftimer

Die Zeitspanne von 20 Minuten ließ mich denken, dass etwas mit IIS falsch konfiguriert war. Ich setze meinen App-Pool (konfiguriert als "no managed code") im Leerlauf, um nach 1 Minute in den Leerlauf zu gehen. Sicher genug, nach 1 Minute muss ich mich erneut einloggen.

Das führt zu der Annahme, dass mein persistierender Authentifizierungscookie nach dem Recyceln eines App-Pools nicht mehr als gültig akzeptiert wird (obwohl mein Cookie nicht auf 10 Tage und SecurityStampValidationInterval auf 10 Tage und 1 Minute konfiguriert ist) .

ich etwas ähnliches in früheren Versionen von .NET in Bezug auf eine web.config der Maschine Schlüssel gesehen habe, aber MVC6 einen system.web Abschnitt in der web.config für mich eine Maschine Schlüssel hat nicht zu setzen.

Mein .NET5-Projekt DNX zielt auf das gesamte .NET-Framework und nicht auf .NET Core ab

Antwort

6

Wie haben Sie den Datenschutz konfiguriert? Mit IIS und DNX wissen wir nicht, wo Schlüssel dauerhaft gespeichert werden sollen, es sei denn, Sie laden ein Profil, das nicht der Standard ist. Sobald Ihre App beendet ist, werden alle Schlüssel zum Signieren der Authentifizierungs-Cookies gelöscht. Dies geschieht nicht in IIS Express, da IIS Express Profile lädt.

Sie haben hier ein paar Optionen. Sie können entweder eine provisioning script auf dem IIS-Server ausführen, um einige Registrierungseinträge zu erstellen, die ASP.NET verwenden kann, oder Sie können configure data protection to use the file system, was Sie tun würden, wenn Sie mehrere Hosts ausführen möchten.

+0

Ich sehe. Ich habe den Datenschutz erforscht, aber ich konnte aus der Dokumentation, die ich für die Verwendung des Dateisystems oder der Registrierung für die Verwendung von persistenten Schlüsseln benötigte, nicht herausfinden. Vielen Dank für Ihre Hilfe! Ich weiß. Net 5 ist immer noch relativ neu, also lernen wir alle :) – mituw16

+0

Wenn Sie Vorschläge haben, wie wir dies besser in Dokumenten oder Vorlagen auftauchen können, lass es mich wissen. – blowdart

+0

Die Dokumente sind großartig! Ich bin gestolpert, weil ich nicht die 2 + 2 = 4 Verbindung machte, die ich zum Dateisystem (oder zur Registrierung) beibehalten musste, um Identität zu erlauben, seine beibehaltenen Schlüssel zu haben. In Wirklichkeit war die Antwort genau da, ich habe es einfach nicht gesehen. Ich habe so lange an dem Thema gearbeitet, dass ich die einfache Antwort verpasst habe :) – mituw16

1

EDIT

Siehe @ blowdarts Antwort für eine bessere Lösung.


Für alle, die das gleiche Problem begegnet die ich hatte, ist die „reparieren“, dass ich für diese implementiert, um den Idle Timer in IIS auf 0 zu setzen, die nie Timeout bedeutet.

Ich bin immer noch auf der Suche nach einer echten Lösung, da einige Hostumgebungen möglicherweise nicht zulassen, dass der Leerlauftimer auf 0 gesetzt wird (normalerweise Shared Hosting usw.).

Verwandte Themen