asp.net 'Remember me' funktioniert nicht mehr mit Formularauthentifizierung

8

Ich habe zwei Websites mit selbstgeschriebenen Mitgliedschaftsanbietern, die auf demselben Server in demselben Web in verschiedenen Webanwendungen und verschiedenen Anwendungspools gehostet werden.

Früher hatte ich das Problem, dass ich mich nicht auf beiden Seiten zusammen anmelden konnte. Danke an Remys post , dies funktioniert jetzt, ich musste das name -Attribut dem Element forms hinzufügen.
Aber jetzt habe ich das Problem, dass die Remember-Me-Option der ASP-Login-Steuerung aufgehört hat zu arbeiten. Der Benutzer wird nach dem normalen Sitzungs-Timeout abgemeldet.

Die Authentifizierungsattribute in der Datei web.config sehen folgendermaßen aus:

%Vor%

Außerdem habe ich den Cookie-Namen für die Formularauthentifizierung auf verschiedene Namen gesetzt.

Gibt es noch etwas, das ich hinzufügen muss, damit die Erinnerungsfunktion funktioniert?

Aktualisieren
Ich habe festgestellt, dass das Problem verschwunden ist, wenn ich die Verschlüsselung und Validierung für den Formular-Authentifizierungs-Cookie deaktiviere. Wenn ich entweder Verschlüsselung, Validierung oder beides aktiviere, tritt das Problem neu auf.
Ich weiß auch, dass es unabhängig von den Session-Cookie-Namen ist (sie könnten sogar identisch sein). Vielleicht hilft diese Information jemandem zu verstehen, was vor sich geht?

Update 1
Danke an Jason Kealey für die Lösung dieses Problems. Ich hätte es nie gefunden. In der Zwischenzeit habe ich die entsprechenden Informationen in msdn gefunden. Im Vorgehensweise: Konfigurieren von MachineKey in ASP.NET 2.0 Im Abschnitt "Überlegungen zur Bereitstellung von Webfarm" wird geschrieben:

Wenn Sie Ihre Anwendung von anderen Anwendungen auf demselben Server isolieren möchten, platzieren Sie <machineKey> in der Datei Web.config für jede Anwendung auf jedem Server in der Farm. Stellen Sie sicher, dass Sie für jede Anwendung separate Schlüsselwerte verwenden, aber die Schlüssel der einzelnen Anwendungen auf allen Servern in der Farm duplizieren.

    
HCL 18.01.2011, 19:15
quelle

3 Antworten

9

Das Problem besteht möglicherweise darin, dass Sie über Prüfschlüssel verfügen, die bei jedem Start des Arbeitsprozesses automatisch generiert werden. Der Cookie ist verschlüsselt, aber wenn Sie zurückkommen, wird ein neuer serverseitiger Schlüssel verwendet und somit kann Ihr Cookie nicht entschlüsselt werden.

Sehen Sie sich den Abschnitt "Computerschlüssel" an Ссылка

Hier ist etwas, das den machineKey-Abschnitt für Sie generieren wird Ссылка

    
Jason Kealey 28.01.2011, 22:01
quelle
2

Versuchen Sie, den Domain-Namen so einzustellen, dass der Cookie des Remembers in allen Fällen korrekt gesetzt ist

%Vor%     
Aristos 28.01.2011 07:04
quelle
0

Das Cookie-Timeout wird ebenfalls von IIS begrenzt und ist standardmäßig auf 20 Minuten begrenzt. Um dies zu ändern:

  1. Öffnen Sie den IIS-Manager.
  2. Klicken Sie mit der rechten Maustaste auf Ihre Site und wählen Sie Eigenschaften.
  3. Wählen Sie die Registerkarte ASP.NET aus und klicken Sie auf Konfiguration bearbeiten.
  4. Wählen Sie die Registerkarte Authentifizierung.
  5. Wählen Sie Gleitendes Ablaufdatum aktivieren.
  6. Setzen Sie das Cookie-Timeout auf einen längeren Wert Wert. Auf 30 einstellen Tage, geben Sie ein    30.00: 00: 00.
  7. Klicken Sie auf OK, und beenden Sie den IIS-Manager.

    
JBrooks 28.01.2011 22:39
quelle