我希望我的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>
这一事实有关?
如何覆盖?
答案 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) { }