Wenn ich den Code unten anrufe, bekomme ich immer result.Succeeded = false
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% 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):
Tags und Links asp.net-mvc asp.net-identity