在 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>
我希望我的 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>