Как войти в систему на основе адреса электронной почты и пароля? - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь создать страницу входа и пытаюсь найти решение.Вот что у меня так далеко.Я пробовал разные вещи, такие как использование 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 голосов
/ 20 сентября 2019

Пожалуйста, предоставьте код, который вы пытаетесь выполнить аутентификацию внутри 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);
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...