在 ASP.NET Core 2.1 中更改 IdentityUser 类型

Changing IdentityUser Type in ASP.NET Core 2.1

我希望我的 User 有一个 Guid 作为主键,但是当我创建自己的用户类型时,我的网站在启动时抛出异常。

有人知道如何更改 IdentityUser 类型吗?

我这样做了:

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

但是当我的程序启动时出现这个错误:

InvalidOperationException: No service for type 'Microsoft.AspNetCore.Identity.UserManager`1[Microsoft.AspNetCore.Identity.IdentityUser]' has been registered.

这是否与身份 UI 现在位于单独的库中并且该库中的控制器期望 UserManager<IdentityUser> 这一事实有关?

我该如何覆盖它?

您应该从 MyUser class 扩展 IdentityUser

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

    public string LastName { get; set; }
}

然后注册新用户class:

services.AddIdentity<MyUser , MyRole>()

最后,在你的 UserManager 被注入的地方,添加你自己的类型:

public HomeController(UserManager<MyUser> userManager) { }

好的,问题找到了。 _LoginPartial.cshtml 注入

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

所以你需要确保它们更新到

@inject SignInManager<MyUser>
@inject UserManager<MyUser>