예제 #1
0
        public async Task <IActionResult> PhoneNumberLogin(string returnUrl)
        {
            ViewBag.ReturnUrl = returnUrl;
            var model = new PhoneNumberLoginInputModel();

            return(View(model));
        }
예제 #2
0
        public async Task <IActionResult> PhoneNumberLogin(PhoneNumberLoginInputModel model, string returnUrl)
        {
            if (ModelState.IsValid)
            {
                var user = _userManager.Users.Where(a => a.PhoneNumber == model.PhoneNumber && a.PhoneNumberConfirmed).FirstOrDefault();

                if (user != null)
                {
                    if (await _userManager.VerifyChangePhoneNumberTokenAsync(user, model.VerificationCode, model.PhoneNumber))
                    {
                        await _signInManager.SignInAsync(user, true);

                        if (Url.IsLocalUrl(returnUrl))
                        {
                            return(Redirect(returnUrl));
                        }
                        else if (string.IsNullOrEmpty(returnUrl))
                        {
                            return(Redirect("~/"));
                        }
                        else
                        {
                            // user might have clicked on a malicious link - should be logged
                            throw new Exception("invalid return URL");
                        }
                    }
                    else
                    {
                        ModelState.AddModelError(string.Empty, "验证码错误");
                    }
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "用户不存在");
                }
            }

            return(View());
        }