IsEmailConfirmedAsync包含一些无效参数



我使用的是MVC 5的脚手架代码,该代码生成login方法。我遵循了来自…的官方教程。。。

创建一个安全的ASP.NET MVC 5 web应用程序,包括登录、电子邮件确认和密码重置(C#)

添加额外的功能,确保在用户登录系统之前确认电子邮件。

以下是我在控制器中的代码:

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}
var currentUser = UserManager.FindByNameAsync(model.Email);
if (currentUser != null)
{
if (!await UserManager.IsEmailConfirmedAsync(currentUser.Id))
{
ViewBag.errorMessage = "You must have a confirmed email to log on.";
return View("Error");
}
}
// Other scaffolded implementations
}

但是,Visual Studio会出现一个错误,指出该参数对于方法IsEmailConfirmedAsync无效。显然,我检查过,currentUser.Idint数据类型,是System.Threading.Taskid。如何修复此问题,使我传递的是UserId而不是任务Id

这是因为在您的代码中,currentUser被分配了从查找用户返回的Task

您应该等待该呼叫以获得所需的行为

var currentUser = await UserManager.FindByNameAsync(model.Email);

即使是与OP相关的例子也有

// Require the user to have a confirmed email before they can log on.
var user = await UserManager.FindByNameAsync(model.Email);
if (user != null)
{
if (!await UserManager.IsEmailConfirmedAsync(user.Id))
{
ViewBag.errorMessage = "You must have a confirmed email to log on.";
return View("Error");
}
}

相关内容

  • 没有找到相关文章

最新更新