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

时间:2018-05-19 18:02:23

标签: c# asp.net-core entity-framework-core asp.net-core-2.1

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

任何人都知道如何更改IdentityUser类型?

我这样做了:

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

但是当我的程序启动时,我收到了这个错误:

  

InvalidOperationException:没有类型的服务   &#39; Microsoft.AspNetCore.Identity.UserManager`1 [Microsoft.AspNetCore.Identity.IdentityUser]&#39;   已经注册。

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

如何覆盖?

2 个答案:

答案 0 :(得分:14)

好的,所以发现了问题。 _LoginPartial.cshtml注入

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

因此您需要确保将其更新为

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

答案 1 :(得分:1)

您应该从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) { }