【问题标题】:Changing IdentityUser Type in ASP.NET Core 2.1在 ASP.NET Core 2.1 中更改 IdentityUser 类型
【发布时间】:2018-05-19 18:02:22
【问题描述】:

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

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

我这样做了:

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

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

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

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

我怎样才能覆盖它?

【问题讨论】:

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


    【解决方案1】:

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

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

    所以您需要确保它们已更新为

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

    【讨论】:

    • 好地方,没注意到这是脚手架,是_layout的一部分
    【解决方案2】:

    你应该从你的MyUser类扩展IdentityUser

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

    然后注册新的用户类:

    services.AddIdentity&lt;MyUser , MyRole&gt;()

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

    public HomeController(UserManager&lt;MyUser&gt; userManager) { }

    【讨论】:

      猜你喜欢
      • 2019-05-13
      • 1970-01-01
      • 2019-02-06
      • 1970-01-01
      • 2017-09-20
      • 2019-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多