Пример #1
0
        public async Task <ActionResult> Login(LoginViewModel user)
        {
            string loginFailureErrorMessage = "Введено неправильное имя пользователя / пароль. Попробуйте еще раз.";

            if (!ModelState.IsValid)
            {
                ViewBag.LoginFailture = loginFailureErrorMessage;
                return(View());
            }

            // removing white-spaces at the beginning and end of the string in Login property
            user.Login = user.Login.Trim();

            var claim = await _userProvider.AuthenticateAsync(user.Login, user.Password);

            if (claim == null)
            {
                ViewBag.LoginFailture = loginFailureErrorMessage;
                ModelState.Clear();
                return(View());
            }

            var authProperties = new AuthenticationProperties {
                IsPersistent = true
            };

            if (!user.RememberMe)
            {
                authProperties.ExpiresUtc = DateTime.UtcNow.AddMinutes(20);
            }

            AuthenticationManager.SignOut();
            AuthenticationManager.SignIn(authProperties, claim);

            return(RedirectToAction("GetStartPage", "Home"));
        }