Warum funktioniert ResetPasswordAsync nicht?

8

Wenn ich den Code unten anrufe, bekomme ich immer result.Succeeded = false

%Vor%

Die Werte für user.Id und Password sind gültig. Die Ergebnisfehler sagen immer "Invalid Token" was ich nicht für möglich halte, da ich es bekomme und es sofort überprüfe und es Fehler gibt. Dies ist nur ein Test der Gesundheit - ich schicke normalerweise das Token per E-Mail an den Benutzer, aber das hat auch nicht funktioniert.

UPDATE 1 Ich definiere den UserManager im selben Controller wie folgt:

%Vor%

UPDATE 2 Hier ist mein ApplicationUserManager-Code:

%Vor%     
EdenMachine 23.02.2015, 00:54
quelle

1 Antwort

19

Das ist eine lange Geschichte, aber wenn Ihr UserManager angibt, dass es Benutzer-Sicherheitsstempel unterstützt, dann stellen Sie sicher, dass der Benutzer auf Datenbankebene einen gültigen Sicherheitsstempel hat, genauer gesagt darf er keinen NULL Stempel haben .

Der Grund ist, dass beim Erzeugen des Codes, wenn der Stempel als null kommt, er durch string.Empty ersetzt und im generierten Reset-Code verwendet wird. Wenn Sie jedoch den Reset-Code validieren, wird der von ihm stammende Stempel direkt mit dem verglichen, was von der Datenbank kommt, so dass Sie string.Empty mit null vergleichen und die Validierung als Konsequenz nicht bestehen.

Aus ASP .NET Identity 2.2-Quellcode für DataProtectorTokenProvider (in der vorherigen Version war es dasselbe):

%Vor%     
João Angelo 26.02.2015, 16:37
quelle

Tags und Links