Beispiel #1
0
        public async Task <IActionResult> Login(string returnUrl, [Bind("Username,Password")] LoginEditModel form)
        {
            var authenticationResult = await _authUserService.Authenticate(
                new UsernamePasswordCredentials {
                Username = form?.Username,
                Password = new PlainTextPassword(form?.Password)
            });

            if (authenticationResult is AuthenticationFailure <UsernamePasswordAuthenticateFailureReason> failure)
            {
                var loginViewModel = new LoginDisplayModel {
                    ReturnUrl = returnUrl, Form = form
                };
                loginViewModel.AddFailureToModelState(failure, ModelState);
                return(View("Index", loginViewModel));
            }

            if (authenticationResult is AuthenticationSuccess authenticationSucces)
            {
                var principal = authenticationSucces.Principal;
                await HttpContext.SignInAsync(principal);
            }

            return(returnUrl != null
        ? Redirect(returnUrl) as IActionResult
        : RedirectToAction("Index", "Home"));
        }
        public async Task <IActionResult> Login(LoginEditModel form,
                                                [FromServices] LoginRequestAsync request)
        {
            var result = await request.HandleAsync(form);

            if (result.Succeeded)
            {
                if (form.ReturnUrl.HasValue())
                {
                    return(Redirect(form.ReturnUrl));
                }

                return(RedirectToAction(nameof(AccountController.Index)));
            }

            if (result.RequiresTwoFactor)
            {
                return(RedirectToAction(nameof(AccountController.SendCode), new { ReturnUrl = form.ReturnUrl, RememberMe = form.RememberLogin }));
            }

            if (result.IsLockedOut)
            {
                ModelState.AddModelError(String.Empty, ACCOUNT_LOCKED);
                return(View(form));
            }

            ModelState.AddModelError(String.Empty, "Invalid username and/or password");
            return(View(form));
        }
Beispiel #3
0
        public async Task <ActionResult> ExternaRegister(LoginEditModel model, string returnUrl)
        {
            if (User.Identity.IsAuthenticated)
            {
                return(RedirectToAction("Index", "Admin"));
            }

            if (ModelState.IsValid)
            {
                var info = await _authenticationService.GetExternalLoginInfoAsync();

                if (info == null)
                {
                    AddError("认证失败");
                    return(RedirectToAction("Login"));
                }

                string avatarUrl = info.ExternalIdentity.FindFirstValue("urn:QQ:avatar");
                ViewBag.Avatar = avatarUrl;

                if (_userService.FindByName(model.UserName) != null)
                {
                    AddError("用户名已存在");
                    return(View(model));
                }

                if (_userService.FindByTrueName(model.NickName) != null)
                {
                    AddError("昵称已存在");
                    return(View(model));
                }

                var user   = new User(model.UserName, model.NickName);
                var result = await _userService.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    await _userService.AddClaimAsync(user.Id, new Claim("avatar", avatarUrl));

                    result = await _userService.AddLoginAsync(user.Id, info.Login);

                    if (result.Succeeded)
                    {
                        await _signInService.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                        return(Redirect(returnUrl));
                    }
                }
                else
                {
                    AddError(result);
                    return(View(model));
                }
            }

            ViewBag.ReturnUrl = returnUrl;
            AddError("未知错误");
            return(View(model));
        }
Beispiel #4
0
        public async Task <ActionResult> Login(LoginEditModel model)
        {
            string modelName = Request.Browser.IsMobileDevice ? "MobileLogin" : "Login";


            if (!ModelState.IsValid)
            {
                return(View(modelName, model));
            }
            string message    = string.Empty;
            var    userAdjust = _userService.FindByTrueName(model.UserName);

            if (userAdjust == null)
            {
                AddError("用户名或密码错误");
                return(View(modelName, model));
            }
            if (userAdjust.IsBlackUser == true)
            {
                AddError("该用户已被列为黑名单");
            }
            else
            {
                if (string.IsNullOrEmpty(model.Password))
                {
                    AddError("请输入密码");
                    return(View(modelName, model));
                }
                var getUser = await _userService.FindAsync(model.UserName, model.Password);

                //var result = await _userService.AddLoginAsync(getUser.Id, new UserLoginInfo("loginProvider", "providerKey"));//通过User添加登录信息
                if (getUser != null)
                {
                    _signInService.SetCurrentUser(getUser);
                    await _signInService.SignInAsync(getUser, isPersistent : false, rememberBrowser : false);

                    if (!string.IsNullOrEmpty(model.ReturnUrl) && Request.ApplicationPath != model.ReturnUrl)
                    {
                        return(Redirect(WebHelper.ResolveUrl("~/" + model.ReturnUrl)));
                    }
                    return(RedirectToAction("Index", "Admin"));
                }
                AddError("用户名或密码错误");
            }
            if (Request.Browser.IsMobileDevice)
            {
                return(View(modelName, model));
            }
            return(View(modelName, model));
        }
        public async Task <IActionResult> Login(LoginEditModel model, string returnUrl)
        {
            ViewData["ReturnUrl"] = returnUrl;

            if (ModelState.IsValid)
            {
                var result = await _userStore.LoginAsync(HttpContext, model.UserName, model.Password, model.RememberMe);

                if (result.Success)
                {
                    return(RedirectToLocal(returnUrl));
                }
                ModelState.AddModelError(string.Empty, result.Error);
            }

            return(View(model));
        }
Beispiel #6
0
        public async Task <ActionResult> Login(LoginEditModel model, string returnUrl)
        {
            if (ModelState.IsValid)
            {
                var user = await _userManager.FindAsync(model.UserName, model.Password);

                if (user != null)
                {
                    await _userManager.UpdateSecurityStampAsync(user.Id);

                    await SignInAsync(user, model.RememberMe);

                    return(RedirectToLocal(returnUrl));
                }
                ModelState.AddModelError("", "Hatalı kullanıcı adı veya şifre girdiniz");
            }

            return(View(model));
        }