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

6

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

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

我做了以下操作:

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

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

InvalidOperationException:没有为类型'Microsoft.AspNetCore.Identity.UserManager`1[Microsoft.AspNetCore.Identity.IdentityUser]'注册服务。

这是否与身份 UI 现在位于单独的库中有关,该库中的控制器正在期望 UserManager<IdentityUser>

我该如何覆盖它?

2个回答

16

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

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

所以你需要确保它们已经更新。

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

好的,没注意到这已经被脚手架化并成为_layout的一部分了。 - DavidB

1
你应该从你的MyUser类扩展IdentityUser:
public class MyUser : IdentityUser
{
    public string FirstName { get; set; }

    public string LastName { get; set; }
}

然后注册新用户类:

services.AddIdentity<MyUser , MyRole>()

最后,在注入UserManager的位置,添加自己的类型:

public HomeController(UserManager<MyUser> userManager) { }


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接