ASP.Net MVC - 两步验证
ASP.Net MVC - Two Step Authentication
早上好
在 MVC 中,管理控制器中有一个方法正在使用。生成令牌。
var code = await UserManager.GenerateChangePhoneNumberTokenAsync(User.Identity.GetUserId(), model.Number);
有谁知道这个生成的令牌保存在哪里。在基本的 MVC 示例中,他们使用它来添加一个 phone 号码,并且需要使用正在向提供的单元格 phone 号码发送短信的令牌进行验证,此代码用于生成该令牌。但是没有那个令牌被保存在哪里,数据库中没有列并且没有被传递到隐藏字段中的视图。但奇怪的是当你输入代码并提交时,它会在post方法中使用下面的
进行比较
public async Task<ActionResult> VerifyPhoneNumber(string phoneNumber)
{
var code = await UserManager.GenerateChangePhoneNumberTokenAsync(User.Identity.GetUserId(), phoneNumber);
// Send an SMS through the SMS provider to verify the phone number
return phoneNumber == null ? View("Error") : View(new VerifyPhoneNumberViewModel { PhoneNumber = phoneNumber });
}
我无法弄清楚 GenerateChangePhoneNumberTokenAsync 方法将在哪里找到生成的令牌以与随模型传入的令牌进行比较。你们有没有人知道在哪里可以找到这个。
亲切的问候
代码未存储在数据库中。代码生成和验证由 ASP.NET Identity 在内部处理。 "ManageController"中有对应的action方法处理phone号码和验证码。这是代码
public async Task<ActionResult> VerifyPhoneNumber(VerifyPhoneNumberViewModel model)
{
if (!ModelState.IsValid)
{
return View(model);
}
var result = await UserManager.ChangePhoneNumberAsync(User.Identity.GetUserId(), model.PhoneNumber, model.Code);
if (result.Succeeded)
{
var user = await UserManager.FindByIdAsync(User.Identity.GetUserId());
if (user != null)
{
await SignInAsync(user, isPersistent: false);
}
return RedirectToAction("Index", new { Message = ManageMessageId.AddPhoneSuccess });
}
// If we got this far, something failed, redisplay form
ModelState.AddModelError("", "Failed to verify phone");
return View(model);
}
注意使用用户 ID、电话号码和代码进行验证的行。
var result = await UserManager.ChangePhoneNumberAsync(User.Identity.GetUserId(), model.PhoneNumber, model.Code);
干杯。
早上好
在 MVC 中,管理控制器中有一个方法正在使用。生成令牌。
var code = await UserManager.GenerateChangePhoneNumberTokenAsync(User.Identity.GetUserId(), model.Number);
有谁知道这个生成的令牌保存在哪里。在基本的 MVC 示例中,他们使用它来添加一个 phone 号码,并且需要使用正在向提供的单元格 phone 号码发送短信的令牌进行验证,此代码用于生成该令牌。但是没有那个令牌被保存在哪里,数据库中没有列并且没有被传递到隐藏字段中的视图。但奇怪的是当你输入代码并提交时,它会在post方法中使用下面的
进行比较 public async Task<ActionResult> VerifyPhoneNumber(string phoneNumber)
{
var code = await UserManager.GenerateChangePhoneNumberTokenAsync(User.Identity.GetUserId(), phoneNumber);
// Send an SMS through the SMS provider to verify the phone number
return phoneNumber == null ? View("Error") : View(new VerifyPhoneNumberViewModel { PhoneNumber = phoneNumber });
}
我无法弄清楚 GenerateChangePhoneNumberTokenAsync 方法将在哪里找到生成的令牌以与随模型传入的令牌进行比较。你们有没有人知道在哪里可以找到这个。
亲切的问候
代码未存储在数据库中。代码生成和验证由 ASP.NET Identity 在内部处理。 "ManageController"中有对应的action方法处理phone号码和验证码。这是代码
public async Task<ActionResult> VerifyPhoneNumber(VerifyPhoneNumberViewModel model)
{
if (!ModelState.IsValid)
{
return View(model);
}
var result = await UserManager.ChangePhoneNumberAsync(User.Identity.GetUserId(), model.PhoneNumber, model.Code);
if (result.Succeeded)
{
var user = await UserManager.FindByIdAsync(User.Identity.GetUserId());
if (user != null)
{
await SignInAsync(user, isPersistent: false);
}
return RedirectToAction("Index", new { Message = ManageMessageId.AddPhoneSuccess });
}
// If we got this far, something failed, redisplay form
ModelState.AddModelError("", "Failed to verify phone");
return View(model);
}
注意使用用户 ID、电话号码和代码进行验证的行。
var result = await UserManager.ChangePhoneNumberAsync(User.Identity.GetUserId(), model.PhoneNumber, model.Code);
干杯。