如何根据电子邮件和密码登录用户?

时间:2019-09-20 03:38:14

标签: asp.net-mvc asp.net-core

我正在尝试创建一个登录页面,并努力寻找解决方案。这是我到目前为止所拥有的。我曾尝试过不同的事情,例如使用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);
        }
    }
}

1 个答案:

答案 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);
            }
相关问题