【问题标题】:C#: UserManager.FindAsync always finds a matchC#:UserManager.FindAsync 总是找到匹配项
【发布时间】:2016-05-05 11:57:23
【问题描述】:

UserManager.FindAsync 总是能找到匹配项,即使我输入了错误的用户名和密码,它也总是返回某种用户 ID。

[HttpPost]
public ActionResult Mobilelogin(LoginViewModel model)
{
    var user = UserManager.FindAsync(model.Email, model.Password);
    if (user != null)
    {
        return new HttpStatusCodeResult(201); // user found
    }
    else
    {
        return new HttpStatusCodeResult(401); // user not found
    }
}

【问题讨论】:

  • FindAsync 返回一个任务。您需要异步等待任务才能获得结果。

标签: c# .net authentication


【解决方案1】:

FindAsync 返回一个Task<TUser>。如果您同步使用它(就像您现在所做的那样),您将始终获得Task 本身,它不为空。

您需要异步等待任务以获取结果(TUser),如下所示:

[HttpPost]
public async Task<ActionResult> Mobilelogin(LoginViewModel model)
{
    var user = await UserManager.FindAsync(model.Email, model.Password);
    if (user != null)
    {
        return new HttpStatusCodeResult(201); // user found
    }
    else
    {
        return new HttpStatusCodeResult(401); // user not found
    }
}

查看this reference,了解有关使用 ASP.NET MVC 进行异步编程的更多信息。

【讨论】:

  • 哦,我不知道 :) 谢谢!
猜你喜欢
  • 1970-01-01
  • 2017-07-19
  • 2017-06-30
  • 1970-01-01
  • 1970-01-01
  • 2019-12-01
  • 1970-01-01
  • 2015-03-17
  • 1970-01-01
相关资源
最近更新 更多