Q:为什么要扩展 IdentityUser?
A:IdentityUser 只包含一些基本属性,很多具体场景下,我们需要保存用户的一些特定属性(如住址、身高等),这时我们就需要扩展 IdentityUser。

步骤

  1. 创建 ApplicationUser,增加了 City 属性:

    1. public class ApplicationUser : IdentityUser
    2. {
    3. public string City { get; set; }
    4. }
  2. ApplicationUser 替换 IdentityUser

  3. 生成迁移记录

    1. public class AppDbContext : IdentityDbContext<ApplicationUser>
    2. {
    3. ...
    4. }
  4. 执行迁移

  5. RegisterViewModel 中添加 City 属性
  6. 注册时保存 City 属性

    1. [HttpPost]
    2. public async Task<IActionResult> Register(RegisterViewModel model)
    3. {
    4. if (ModelState.IsValid)
    5. {
    6. var user = new ApplicationUser
    7. {
    8. UserName = model.Email,
    9. Email = model.Email,
    10. City = model.City
    11. };
    12. var result = await _userManager.CreateAsync(user, model.Password);
    13. ...
    14. }
    15. }