如果他们在购买产品时输入密码,我会打电话给他们。如果他们创建了一个帐户,那么我必须更新要反映给该用户的数据。但我遇到的问题是我无法在同一个调用中使用该用户,并且无法弄清楚如何更新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);
}
答案 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
}