Изменение типа IdentityUser в ASP.NET Core 2.1

Я хочу, чтобы мой User имел Guid в качестве первичного ключа, но когда я создаю свой собственный тип пользователя, мой веб-сайт выдает исключение при запуске.

Кто-нибудь знает, как изменить тип IdentityUser?

Я сделал это:

services.AddIdentity<MyUser, MyRole>()
    .AddEntityFrameworkStores<UBContext>()
    .AddDefaultUI()
    .AddDefaultTokenProviders();

Но когда моя программа запускается, я получаю эту ошибку:

InvalidOperationException: не была зарегистрирована служба для типа «Microsoft.AspNetCore.Identity.UserManager`1 [Microsoft.AspNetCore.Identity.IdentityUser]».

Связано ли это с тем фактом, что пользовательский интерфейс идентификации теперь находится в отдельной библиотеке, а контроллер в этой библиотеке ожидает UserManager<IdentityUser>?

Как я могу это отменить?


person Zeus82    schedule 19.05.2018    source источник


Ответы (2)


Итак, проблема обнаружена. _LoginPartial.cshtml вводит

@inject SignInManager<IdentityUser>
@inject UserManager<IdentityUser>

поэтому вам нужно убедиться, что они обновлены до

@inject SignInManager<MyUser>
@inject UserManager<MyUser>
person Zeus82    schedule 19.05.2018
comment
Хорошее место, не заметил, что это было построено на строительных лесах и было частью _layout - person DavidB; 26.09.2018

Вы должны расширить IdentityUser из своего MyUser класса:

public class MyUser : IdentityUser
{
    public string FirstName { get; set; }

    public string LastName { get; set; }
}

Затем регистрируем новый класс пользователя:

services.AddIdentity<MyUser , MyRole>()

И, наконец, там, где вводится ваш UserManager, добавьте свой собственный тип:

public HomeController(UserManager<MyUser> userManager) { }

person Mike Bovenlander    schedule 19.05.2018