web-dev-qa-db-ja.com

ASP.NET Core2.1でのIdentityUserタイプの変更

Userに主キーとしてGuidを持たせたいのですが、独自のユーザータイプを作成すると、Webサイトが起動時に例外をスローします。

IdentityUserタイプを変更する方法を知っている人はいますか?

これは私がしました:

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

しかし、プログラムを起動すると、次のエラーが発生します。

InvalidOperationException:タイプ 'Microsoft.AspNetCore.Identity.UserManager`1 [Microsoft.AspNetCore.Identity.IdentityUser]'のサービスが登録されていません。

これは、ID UIが別のライブラリにあり、そのライブラリのコントローラーがUserManager<IdentityUser>を予期しているという事実と関係がありますか?

どうすればそれを上書きできますか?

6
Zeus82

わかりました、それで問題を見つけました。 _LoginPartial.cshtmlが注入します

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

したがって、それらがに更新されていることを確認する必要があります

@inject SignInManager<MyUser>
@inject UserManager<MyUser>
14
Zeus82

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) { }

1