Ich möchte, dass meine User
eine Guid
als Primärschlüssel hat, aber wenn ich meinen eigenen Benutzertyp erstellt, löst meine Website beim Start eine Ausnahme aus.
Kann jeder den IdentityUser-Typ ändern?
Ich tat dies:
services.AddIdentity<MyUser, MyRole>()
.AddEntityFrameworkStores<UBContext>()
.AddDefaultUI()
.AddDefaultTokenProviders();
Wenn mein Programm startet, bekomme ich folgende Fehlermeldung:
InvalidOperationException: Kein Dienst für Typ 'Microsoft.AspNetCore.Identity.UserManager`1 [Microsoft.AspNetCore.Identity.IdentityUser]' wurde registriert.
Hat das etwas mit der Tatsache zu tun, dass sich die Identitäts-Benutzeroberfläche jetzt in einer separaten Bibliothek befindet und ein Controller in dieser Bibliothek einen UserManager<IdentityUser>
erwartet?
Wie kann ich das überschreiben?
Ok, also das Problem gefunden. _LoginPartial.cshtml injiziert
@inject SignInManager<IdentityUser>
@inject UserManager<IdentityUser>
sie müssen also sicherstellen, dass sie aktualisiert werden
@inject SignInManager<MyUser>
@inject UserManager<MyUser>
Sie sollten das IdentityUser
aus Ihrer MyUser
Klasse erweitern:
public class MyUser : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
Dann registrieren Sie die neue Benutzerklasse:
services.AddIdentity<MyUser , MyRole>()
Und schließlich, wo Ihr UserManager
injiziert wird, fügen Sie Ihren eigenen Typ hinzu:
public HomeController(UserManager<MyUser> userManager) { }