Ich habe gerade auf die neue 2.0-Version des Identity Framework umgestellt. In 1.0 konnte ich ein Benutzerobjekt mit bekommen manager.FindByIdAsync(User.Identity.GetUserId())
. Die GetUserId()
Methode scheint in 2.0 nicht zu existieren.
Jetzt kann ich nur noch herausfinden, manager.FindByEmailAsync(User.Identity.Name)
welches auf das Feld Benutzername in der Benutzertabelle verweist. In meiner Anwendung entspricht dies dem E-Mail-Feld.
Ich kann sehen, dass dies später zu Problemen führt, wenn jemand seine E-Mail aktualisieren muss. Gibt es eine Möglichkeit, das aktuell angemeldete Benutzerobjekt basierend auf einem unveränderlichen Wert (z. B. dem ID-Feld) im Identity 2.0 Framework abzurufen?
c#
asp.net
asp.net-identity
Jasonpresley
quelle
quelle
Antworten:
GetUserId()
ist eine Erweiterungsmethode aufIIdentity
und es ist inMicrosoft.AspNet.Identity.IdentityExtensions
. Stellen Sie sicher, dass Sie den Namespace mit hinzugefügt habenusing Microsoft.AspNet.Identity;
.quelle
Um CurrentUserId in Asp.net Identity 2.0 zu erhalten, müssen Sie zunächst Folgendes importieren
Microsoft.AspNet.Identity
:C #:
using Microsoft.AspNet.Identity;
VB.NET:
Und dann rufen
User.Identity.GetUserId()
Sie an, wo immer Sie wollen:Diese Methode gibt die aktuelle Benutzer-ID als definierten Datentyp für die Benutzer-ID in der Datenbank zurück (der Standardwert ist
String
).quelle
Nur für den Fall, dass Sie wie ich sind und das ID-Feld der Benutzerentität ein Int oder etwas anderes als eine Zeichenfolge ist,
using Microsoft.AspNet.Identity; int userId = User.Identity.GetUserId<int>();
wird den Trick machen
quelle
Ich hatte das gleiche Problem. Ich verwende derzeit Asp.net Core 2.2. Ich habe dieses Problem mit dem folgenden Code gelöst.
using Microsoft.AspNetCore.Identity; var user = await _userManager.FindByEmailAsync(User.Identity.Name);
Ich hoffe, dass dies jemandem nützlich sein wird.
quelle