Identity Framework添加用户并以相同的方法使用

时间:2017-06-13 00:13:32

标签: asp.net asp.net-mvc asp.net-core asp.net-core-mvc asp.net-identity

如果他们在购买产品时输入密码,我会打电话给他们。如果他们创建了一个帐户,那么我必须更新要反映给该用户的数据。但我遇到的问题是我无法在同一个调用中使用该用户,并且无法弄清楚如何更新Identity Framework以便能够识别新创建的用户。如果页面被刷新并再次尝试它可以工作,但第一次创建错误...因为没有用户。

它将数据保存在AspNetUsers表中。 newUser对象具有已分配的用户。但我也无法使用该对象。我尝试拉出newUser对象并分配newUser对象,但然后尝试创建一个具有相同ID的新用户,并且我得到外键错误。我不知道如何制作它,所以我可以在同一个电话中使用新创建的用户。

public async Task<IActionResult> CheckoutStep2(CheckoutStep2ViewModel model)

  if (model.Password != null && model.PasswordConfirm != null)
  {
    ApplicationUser newUser = new ApplicationUser { UserName = model.PaymentInformation.BillingEmail, Email = model.PaymentInformation.BillingEmail };
    var result = await userManager.CreateAsync(newUser, model.Password);
    if (result.Succeeded)
    {
      await signInManager.SignInAsync(newUser, isPersistent: false);
    }
  }

  // THIS CALL NEVER RETRIEVES THE NEWLY CREATED USER
  ApplicationUser user = 
  this.commonDataAccess.GetCurrentUser(User.Identity.Name);

  // IRREVERENT DATA REMOVED

}

GetCurrentUser

public ApplicationUser GetCurrentUser(string userName)
{
  return context.Users.FirstOrDefault(x => x.UserName == userName);
}

1 个答案:

答案 0 :(得分:0)

我无法通过User.Identity.Name识别已登录的用户。因此,我创建了一个新的调用来通过ID获取用户,并将新创建的ID传递给调用,以从实体图中跟踪的数据库中获取用户(外键问题)

工作电话

public async Task<IActionResult> CheckoutStep2(CheckoutStep2ViewModel model) {

  ApplicationUser user = null;
  if (model.Password != null && model.PasswordConfirm != null)
  {
    user = new ApplicationUser { UserName = model.PaymentInformation.BillingEmail, Email = model.PaymentInformation.BillingEmail };
    var result = await userManager.CreateAsync(newUser, model.Password);
    if (result.Succeeded)
    {
      await signInManager.SignInAsync(newUser, isPersistent: false);
    }
  }

  // THIS CALL NEVER RETRIEVES THE NEWLY CREATED USER
  user = this.commonDataAccess.GetUserById(user.Id);


  ....IRREVERENT DATA REMOVED    
}