我正在用asp.net核心mvc 2.2编写一个项目,我的问题是: 身份验证期间,“。FindByNameAsync()”始终返回“ NULL”,因此身份验证过程不成功。 我的登录表单包含:
<form asp-controller="Account" asp-action="Login" method="post">
<div asp-validation-summary="All" class="Danger"></div>
<div class="form-group">
<div>
<input asp-for="Mobile" type="text" class="form-control" style="direction:ltr;">
<span asp-validation-for="Mobile" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<div>
<input asp-for="Password" type="password" class="form-control" style="direction:ltr;">
<span asp-validation-for="Password" class="text-danger"></span>
</div>
</div>
<br />
<div class="form-group">
<div>
<input type="submit" class="btn btn-lg btn-primary btn-block" style="text-align: center;" value="LOG IN" />
</div>
</div>
</form>
我的AccountController.cs包含:
[HttpPost]
public async Task<IActionResult> Login(Register register)
{
if (!ModelState.IsValid)
return View();
var user = await _userManager.FindByNameAsync(register.Mobile);
if(user!=null)
{
var result = await _signInManager.PasswordSignInAsync(user, register.Password, false, false);
if(result.Succeeded)
{
return RedirectToAction("Welcome", "Account");
}
}
ModelState.AddModelError("", "User name/password not found");
return View();
}
我的数据库表是:
public class Register
{
[Key]
[Required]
public int Id { get; set; }
[ForeignKey("IdFK")]
public ICollection<Advertisement> Advertisements { get; set; }
[Required]
public string Mobile { get; set; }
public string Name { get; set; }
public string Family { get; set; }
[Required]
public string Password { get; set; }
[EmailAddress]
public string Mail { get; set; }
}
请帮助我摆脱这个问题。
我也使用了“ register.Name”,但是没有用!
这些值也在DB中。我也尝试过.FindByEmailAsync(register.Mail)
,但是没有用。
我在“ AccountController.cs”的开头使用断点,并且看到“ register.Mobile”的值为“ CORRECT”,但不幸的是,“ user”的值仍为“ NULL”!
我还创建了一个新项目,并在其中实施了以前的项目,但是它也没有起作用。
请注意,我在计算机上安装了Windows 10和VisualStudio 2017 15.9.5和VisualStudio 2019 Preview 1.1。