web-dev-qa-db-de.com

Ändern des IdentityUser-Typs in ASP.NET Core 2.1

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?

6
Zeus82

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>
13
Zeus82

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) { }

1