2017-11-09 3 views
0

Ich bin mit Asp.Net-Identität-2 und I entwickelt, um das Bestätigungs-E-Flow.Asp.NET - Identität 2 - Ungültige Token-Fehler - Php

Alles funktioniert gut auf meiner lokalen Umgebung, aber sobald ich den Code auf meinem Server bereitstellen und ich das gleiche Szenario (das auf meinem lokalen arbeitet) auf meinem Server testen, heißt es "Invalid Token".

Szenario

  • E-Mail ändern
  • e-mail erhalten
  • Klicken Sie auf den Link "E-Mail bestätigen"
  • Weitergeleitet
  • eine Mitteilung Webseite Pop-up sagen „Invalid Token "

Ich überprüfe bereits alle möglichen Fehler, die in diesem question sind und ich habe alles richtig, deshalb funktioniert das perfekt auf meinem lokalen. Muss etwas mit dem Server sein. Ich dachte, das Datum des Servers könnte sich auswirken, aber ich habe das Datum meines Datenbankservers und meines Webservers synchronisiert und es schlägt immer noch fehl.

ich GenerateEmailConfirmationTokenAsync bin mit dem Token und mit ConfirmEmailAsync zu erzeugen, um die Token zu bestätigen. Ich führe diese Methoden wirklich aus, weil ich Logs dafür anlege, damit ich sicher sein kann (Wenn du nicht weißt, was passiert, musst du dir alles sicher sein?)

Ich kodiere bereits/decodiere die URL so Das Token wird nicht beschädigt. Ich bin mir dessen sicher, weil ich Logs einfüge und den Code im Server laufen lasse und einige Male überprüft habe.

Der Benutzer verfügt über eine Sicherheitsmarke in der Datenbank, so ist es nicht, dass

Die TokenLifeSpan 8 Tage ist. So ist es nicht.

Ich habe sogar versucht, die AllowOnlyAlphanumericUserNames Eigenschaft = false in UserValidator und sogar die UniqueEmail = false

userManager.UserValidator = new UserValidator<User>(userManager) { AllowOnlyAlphanumericUserNames = false, UniqueEmail = false }; 

-Code des Tokens

ApplicationUserManager.GenerateEmailConfirmationTokenAsync(userId); 

-Code zu erzeugen, das Token

ApplicationUserManager.ConfirmEmailAsync(subject, token); 
zu bestätigen

Irgendeine Idee?

aktualisiert

Es war die Arbeit auf dem Server/local mit allen Kunden, aber nicht mit dem Php-Client und der Php-Client tat zusätzliche Arbeit, die die Sicherheit Stempel ändert damit das Problem.

Als einziger Client auf dem Server in Php war, dachte ich, dass etwas mit dem Server falsch war und nicht mit meiner lokalen Umgebung. Nach der Installation der gesamten Umgebung (mit PHP-Client) in meinem lokalen und Debug, habe ich das Problem herausgefunden. Bitte lesen Sie die Antwort unten.

+0

Können Sie Ihren Code teilen, wo Sie Token/Token überprüfen? –

+0

sicher, ich poste es einfach. Der Code ist so einfach. Ich glaube nicht, dass es sich um den Code handelt, denn wie gesagt, er arbeitet lokal (für alle Entwickler) –

Antwort

0

Nun wurde der Fehler durch einen Code verursacht, der nach der Token-Generation ausführen wurde.Dieser Code hat den SecurityStamp des Benutzers in der Datenbank geändert.

Da das Asp.Net Identity 2 den Sicherheitstempel verwendet, um das Token zu generieren und zu validieren, und es nach der Generierung des Tokens geändert wurde, war das Token immer ungültig.

Danke!