ASP.NET CoreでIdentityUser、IdentityRoleにカラムを追加する。
環境
- Windows 10 Pro 1903
- Visual Studio 2019
- ASP.NET Core 2.1
ASP.NET Coreでユーザー認証、認可にIdentityを使用する場合、元から用意されているIdentityUser
、IdentityRole
などにプロパティ(DB上のカラム)を追加したい場合がある。
ここでは、IdentityUser
にEmployeeId
プロパティを追加する場合を例として説明する。
1. IdentityUser
やIdentityRole
を継承したクラスを作る
public class HogeUser : IdentityUser { }
2. HogeUser
にEmployeeId
プロパティを追加する
public class HogeUser : IdentityUser { public string EmployeeId { get; set; } }
3. DbContextに変更を加える
DBの操作を行うためにIdentityDbContext
クラスを継承した〇〇DbContext
というクラスがおそらくあるはず。
ここで、新しく作成したクラス(HogeUser)を使うように指定する必要がある。
そうしないと、マイグレーション時にDBにカラムが追加されない。
public class AppUserDbContext : IdentityDbContext<HogeUser> { .... }
IdentityRole
も変える場合、例えばIdentityRole
を継承したHogeRole
を使う場合
public class AppUserDbContext : IdentityDbContext<HogeUser, HogeRole, string> { .... }
このIdentityDbContextの3つの方引数のうち,最後のstring
は何なのか,なぜ必要なのか.
これはIdentityRole
TKeyはIdentityRoleのIdの型として使用される.
今回,IdentityRoleのIdがstring型だったため,ここでstringを使用している.
4. DBへの反映
あとはいつものマイグレーションの操作を行えば、DB上のそれぞれのテーブルにカラムが追加される。