aspnet-Identität ungültiges token auf der Bestätigungs-E-Mail
Ich versuche, um zu bestätigen Sie ein Konto, aber ich bin immer "invalid token." angezeigt.
Hier ist, was ich versuche:
var code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
var callbackUrl = Url.Action("ConfirmacaoEmail", "Usuario", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
await UserManager.SendEmailAsync(user.Id, "Ativação de Conta", user.GetEmailAtivacao(model.Nome, callbackUrl));
wenn ich den Anruf UserManager.ConfirmEmailAsync
nach diesem code, kann ich das bestätigen-account. Allerdings, wenn ich den link zu öffnen, dass es in der variable callbackUrl und versuchen Sie, um zu bestätigen, durch diese Aktion, ich bin immer der Fehler.
Dachte ich, es könnte etwas mit OwinContext, also habe ich beschlossen zu nennen HttpContext.GetOwinContext().GetUserManager<MyCustomUserService>
aber ich bin immer der gleiche Fehler.
Irgendwelche Hinweise?
- In meinem Fall (Asp.Net Core 3.0) es scheint, dass die eingerüstet Seiten führte zu diesem Fehler. Siehe mein Antwort hier.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wahrscheinlich, dass der code in transit geändert durch browser. Versuchen Sie dabei UrlEncode auf den token:
Sonst browser patzt mit der speziellen Symbole, die vorhanden sein können in der token.
/
in%2F
+
und/
(faqs.org/rfcs/rfc4648.html Blättern Sie zu "Tabelle 1: Die base64-Alphabet") - beide haben eine Besondere Bedeutung in URI. Daher müssen Sie die url-codierenBeispiel:
Serdar Lösung war der Schlüssel zu der Lösung für Leerzeichen und + simbols mit Eckig als web-client-Anwendung.
Aber manchmal war ich auch immer zufällig "invalid token" - Fehler. Nach einigen Abfragen, um die Benutzer-Datenbank habe ich gefunden, dass diese Fehler wurden nur jene Benutzer, die Leerzeichen o Bindestriche in Benutzernamen.
Lösung war, konfigurieren Sie den Benutzer-Manager zu ermöglichen, diese Zeichen in Benutzernamen. Wollte sagen, dass mein Benutzer-Datenbank migriert wurde von Druppal direkt an SQL Server und viele von denen, die Benutzer vermieden die default policy UserValidator auf Benutzer-Manager.
Finden Sie, wie zu konfigurieren, die UserValidator zu zulassen, die nicht-alphanumerische Zeichen am Ende von diesem thread:
Asp.NET - Identität 2 - Invalid-Token Fehler
Ok, das Stunden, Nein, Tage meines Lebens. Nach dem Versuch alle anderen Vorschläge in diesem thread ein Asp.NET - Identität 2 - Invalid-Token Fehler ich fand, dass anstelle von aufrufen
in der Register-Methode nur vor der GenerateEmailConfirmationTokenAsync-block
genannt wurde, ist definiert als
Ich denke, dass dieses verursacht wurde durch das Gerüst, das die Anwendung mit einem älteren ASP.Net MVC-Version. Die beschriebene Methode kann gefunden werden in http://www.asp.net/identity/overview/getting-started/introduction-to-aspnet-identity von 2013.
Falls diese Lösungen nicht für Sie arbeiten - lief ich in das problem Asp.Net Kern-Projekt, da habe ich die folgende Konfiguration im Startup.cs:
Die zweite Einstellung war, die den Bestätigungs-code in Kleinbuchstaben umgewandelt, was verursachte, dass die Validierung fehlschlägt. Im Idealfall würde ich mag zu halten query-string-Parameter Kleinschreibung, und nicht ändern, die query-string-Werte, aber ich bin nicht der Suche nach einem Weg, das zu tun, so dass ich nur entfernt den Abfrage-string-Einstellung: