我正在尝试创建一个登录页面,并努力寻找解决方案。这是我到目前为止所拥有的。我曾尝试过不同的事情,例如使用passwordAsync和EmailAsync,但无法正常工作。我正在使用实体核心框架。
控制器
public class AccountController : Controller
{
private readonly SignUpContext _signUp;
private readonly LoginContext _login;
public AccountController(SignUpContext signUp, LoginContext login)
{
_signUp = signUp;
_login = login;
}
[HttpGet]
public IActionResult Login()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Login(Login login)
{
if (ModelState.IsValid)
{
}
return View(login);
}
[HttpGet]
public IActionResult SignUp()
{
return View();
}
[HttpPost]
public async Task<IActionResult> SignUp([Bind("UserID,FirstName,LastName,Address1,Address2,City,State,Zipcode,Phone,Email,Password")]SignUp users)
{
if (ModelState.IsValid)
{
_signUp.Add(users);
await _signUp.SaveChangesAsync();
return RedirectToAction("Login");
}
return View(users);
}
}
}
答案 0 :(得分:0)
请提供您要在ModelState.IsValid内部进行身份验证的代码
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Login(Login login)
{
if (ModelState.IsValid)
{
}
return View(login);
}
但是,您可以使用以下方法进行身份验证:
ApplicationUser signedUser = UserManager.FindByEmail(model.Email);
var result = await SignInManager.PasswordSignInAsync(signedUser.UserName, model.Password, model.RememberMe, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
return RedirectToLocal(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
case SignInStatus.Failure:
default:
ModelState.AddModelError("", "Invalid login attempt.");
return PartialView(model);
}