Exemple #1
0
        public async Task <ActionResult> LightLogin(LoginViewModel model, string returnUrl)
        {
            if (ModelState.IsValid)
            {
                var user = await UserManager.FindByNameAsync(model.Email);

                if (user == null)
                {
                    TempData["LoginError"] = "Invalid";
                    return(RedirectToAction("Index", "Home"));
                }
                //Add this to check if the email was confirmed.
                if (!await UserManager.IsEmailConfirmedAsync(user.Id))
                {
                    TempData["LoginError"] = "Unconfirmed";
                    return(RedirectToAction("Index", "Home"));
                }
                if (await UserManager.IsLockedOutAsync(user.Id))
                {
                    TempData["LoginError"] = "Lockout";
                    return(RedirectToAction("Index", "Home"));
                }
                var result = await SignInHelper.PasswordSignIn(model.Email, model.Password, model.RememberMe, shouldLockout : false);

                switch (result)
                {
                case SignInStatus.Success:
                    return(RedirectToLocal(returnUrl));
                }
            }

            // If we got this far, something failed, redisplay form
            TempData["LoginError"] = "Invalid";
            return(RedirectToAction("Index", "Home"));
        }
        public async Task <ActionResult> GuestLogin(GuestViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            // This doen't count login failures towards lockout only two factor authentication
            // To enable password failures to trigger lockout, change to shouldLockout: true
            var result = await SignInHelper.PasswordSignIn(model.GuestAcct, model.GuestPassword, false, shouldLockout : false);

            switch (result)
            {
            case SignInStatus.Success:
                return(RedirectToLocal(returnUrl));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.RequiresTwoFactorAuthentication:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl }));

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Invalid login attempt.");
                return(View(model));
            }
        }
        public async Task <ActionResult> Login(string returnUrl)
        {
            ViewBag.ReturnUrl = returnUrl;
            //NC Start of auto login code - always auto sign in as guest, copied from the guest post code!
            GuestViewModel model = new GuestViewModel {
                GuestAcct = "*****@*****.**", GuestPassword = "******"
            };
            var result = await SignInHelper.PasswordSignIn(model.GuestAcct, model.GuestPassword, false, shouldLockout : false);

            switch (result)
            {
            case SignInStatus.Success:
                return(RedirectToLocal(returnUrl));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.RequiresTwoFactorAuthentication:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl }));

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Invalid login attempt.");
                return(View(model));
            }
            //NC - End of auto sign in code
            return(View());
        }
Exemple #4
0
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            // This doen't count login failures towards lockout only two factor authentication
            // To enable password failures to trigger lockout, change to shouldLockout: true
            var result = await SignInHelper.PasswordSignIn(model.UserName, model.Password, model.RememberMe, shouldLockout : false);

            switch (result)
            {
            case SignInStatus.Success:
                return(RedirectToLocal(returnUrl));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.RequiresTwoFactorAuthentication:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl }));

            case SignInStatus.AccountDisabled:
                ModelState.AddModelError("", "Your Account has been disabled, please contact system administrator.");
                return(View(model));

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Invalid login attempt.");
                return(View(model));
            }
        }
        protected void LogIn(object sender, EventArgs e)
        {
            if (IsValid)
            {
                // Validate the user password
                var manager      = Context.GetOwinContext().GetUserManager <ApplicationUserManager>();
                var signinHelper = new SignInHelper(manager, Context.GetOwinContext().Authentication);

                // This doen't count login failures towards lockout only two factor authentication
                // To enable password failures to trigger lockout, change to shouldLockout: true
                var result = signinHelper.PasswordSignIn(Email.Text, Password.Text, RememberMe.Checked, shouldLockout: false);
                switch (result)
                {
                case SignInStatus.Success:
                    IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response);
                    break;

                case SignInStatus.LockedOut:
                    Response.Redirect("/Account/Lockout");
                    break;

                case SignInStatus.RequiresTwoFactorAuthentication:
                    Response.Redirect("/Account/TwoFactorSignIn?ReturnUrl=" + Request.QueryString["ReturnUrl"], true);
                    break;

                case SignInStatus.Failure:
                default:
                    FailureText.Text     = "Invalid login attempt";
                    ErrorMessage.Visible = true;
                    break;
                }
            }
        }
        protected void LogIn(object sender, EventArgs e)
        {
            if (IsValid)
            {
                // Validate the user password
                var manager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>();
                var signinHelper = new SignInHelper(manager, Context.GetOwinContext().Authentication);

                // This doen't count login failures towards lockout only two factor authentication
                // To enable password failures to trigger lockout, change to shouldLockout: true
                var result = signinHelper.PasswordSignIn(Email.Text, Password.Text, RememberMe.Checked, shouldLockout: false);
                switch (result)
                {
                    case SignInStatus.Success:
                        IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response);
                        break;
                    case SignInStatus.LockedOut:
                        Response.Redirect("/Account/Lockout");
                        break;
                    case SignInStatus.RequiresTwoFactorAuthentication:
                        Response.Redirect("/Account/TwoFactorSignIn?ReturnUrl=" + Request.QueryString["ReturnUrl"],true);
                        break;
                    case SignInStatus.Failure:
                    default:
                        FailureText.Text = "Invalid login attempt";
                        ErrorMessage.Visible = true;
                        break;
                }
            }
        }
Exemple #7
0
        /// <summary>
        /// A beagle tag user can log in to receive a list of tags that are associated to them
        /// </summary>
        /// <param name="email"></param>
        /// <param name="password"></param>
        /// <returns></returns>
         public async Task<JsonResult> Login (string email, string password)
        {
            if (email == null || password == null)
            {
                return Json(new
                {
                    success = false,
                    message = "missing one or more parameters",
                    UID = "",
                }, JsonRequestBehavior.AllowGet);
            }

             string UID = "";
             List<IdentitySample.Models.Tag> tags = new List<Models.Tag>();
             bool success = false;
             var message = "";

             //make the login call
            // This doen't count login failures towards lockout only two factor authentication
            // To enable password failures to trigger lockout, change to shouldLockout: true

            var uM = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
            var aM = HttpContext.GetOwinContext().Authentication;
            var signInHelper = new SignInHelper(uM, aM);
            var result = await signInHelper.PasswordSignIn(email, password, false, shouldLockout: false);

             if(result == SignInStatus.Success)
             {
                 var test2 = ZDB.Users;
                 var user = await ZDB.Users.Find(x => x.UserName == email).FirstOrDefaultAsync();
                 if(user != null)
                 {
                     //get the fields we need
                     UID = user.Id;
                     tags = user.Tags;
                     success = true;
                     //update the user
                     await ZDB.Users.UpdateOneAsync(x => x.UserName == email, Builders<ApplicationUser>.Update.Set(x => x.LastLogin, DateTime.UtcNow));
                 }
                 else
                 {
                     message = "error talking to database";
                 } 
             }
             else
             {
                 message = result.ToString();
             }
             var test = User.Identity.GetUserId();
            return Json(new
            {
                success = success,
                message = message,
                UID = UID,
                tags = tags

            }, JsonRequestBehavior.AllowGet);
        }
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            // 这不会计入到为执行帐户锁定而统计的登录失败次数中
            // 若要在多次输入错误密码的情况下触发帐户锁定,请更改为 shouldLockout: true
            //var result = await SignInManager.PasswordSignInAsync(model.Email, 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("", "无效的登录尝试。");
            //        return View(model);
            //}
            var result = await SignInHelper.PasswordSignIn(model.Email, model.Password, model.RememberMe, shouldLockout : false);

            switch (result)
            {
            case SignInStatus.Success:
                log.Info("登陆成功:用户:" + model.Email);
                return(RedirectToLocal(returnUrl));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.InvalidEmail:
                // if (model.Email == "*****@*****.**")
            {
                var user = await UserManager.FindByNameAsync(model.Email);

                var code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);

                var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                ViewBag.Link = callbackUrl;
            }
                log.Info("用户未验证Email:" + model.Email);
                return(View("DisplayEmail"));

            case SignInStatus.RequiresTwoFactorAuthentication:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }));

            case SignInStatus.Failure:
            default:
                log.Info("无效的登录尝试 " + model.Email);
                ModelState.AddModelError("", "无效的登录尝试。");
                return(View(model));
            }
        }
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!EmailValidator.IsValid(model.Email))
            {
                ModelState.AddModelError("Email", "Email kunne ikke valideres som værende korrekt email format.");
            }
            else
            {
                model.Email = EmailValidator.ParseEmail(model.Email);
            }

            if (!ModelState.IsValid)
            {
                ViewBag.ReturnUrl           = returnUrl;
                ViewBag.LiveDemoMemberships = Demo.GetLiveDemoMemberships();
                ViewBag.EnableDemo          = (ViewBag.LiveDemoMemberships != null && ViewBag.LiveDemoMemberships.Count > 0);
                ViewBag.EnableMobil         = UserManager.TwoFactorProviders.ContainsKey("PhoneCode");
                model.LoginState            = LoginViewModel.State.Login;
                return(View(model));
            }

            // This doen't count login failures towards lockout only two factor authentication
            // To enable password failures to trigger lockout, change to shouldLockout: true
            var result = await SignInHelper.PasswordSignIn(model.Email, model.Password, model.RememberMe, shouldLockout : false);

            switch (result)
            {
            case SignInStatus.Success:

                var cookie = new HttpCookie("LastEmailLogin", model.Email);
                cookie.Expires = DateTime.Now.AddMonths(1);
                Response.AppendCookie(cookie);

                return(RedirectToLocal(returnUrl));

            case SignInStatus.UnConfirmed:
                return(RedirectToAction("EmailNotConfirmed", new { email = model.Email }));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.RequiresTwoFactorAuthentication:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl }));

            case SignInStatus.Failure:
            default:
                ViewBag.ReturnUrl           = returnUrl;
                ViewBag.LiveDemoMemberships = Demo.GetLiveDemoMemberships();
                ViewBag.EnableDemo          = (ViewBag.LiveDemoMemberships != null && ViewBag.LiveDemoMemberships.Count > 0);
                ViewBag.EnableMobil         = UserManager.TwoFactorProviders.ContainsKey("PhoneCode");
                model.LoginState            = LoginViewModel.State.Login;
                ModelState.AddModelError("", "Invalid login attempt.");
                return(View(model));
            }
        }
        public async Task <ActionResult> Login(LoginViewModel details)
        {
            string returnUrl = TempData["returnUrl"] == null ? "" : TempData["returnUrl"].ToString();

            if (ModelState.IsValid)
            {
                AppUser user = await UserManager.FindAsync(details.UserName,
                                                           details.Password);

                if (user == null)
                {
                    ModelState.AddModelError("", "Невалидно потребителско име или парола!");
                }
                else
                {
                    ClaimsIdentity ident = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);

                    ident.AddClaims(AdministratorClaimsProvider.AddAdministratorAccessToRoles(this, ident));
                    AuthManager.SignOut();

                    AuthManager.SignIn(new AuthenticationProperties {
                        IsPersistent = false
                    }, ident);



                    if (!user.IsGoogleAuthenticatorEnabled)
                    {
                        return(RedirectToAction("EnableGoogleAuthenticator", new { returnUrl = returnUrl, userName = user.UserName }));
                    }

                    Infrastructure.Helpers.SignInStatus result = await SignInHelper.PasswordSignIn(details.UserName, details.Password, false, shouldLockout : false);

                    switch (result)
                    {
                    case Infrastructure.Helpers.SignInStatus.Success:
                        return(RedirectToLocal(returnUrl));

                    case Infrastructure.Helpers.SignInStatus.LockedOut:
                        return(View("Lockout"));

                    case Infrastructure.Helpers.SignInStatus.RequiresTwoFactorAuthentication:
                        return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl }));

                    case Infrastructure.Helpers.SignInStatus.Failure:
                    default:
                        ModelState.AddModelError("", "Invalid login attempt.");
                        return(View(details));
                    }
                }
            }

            TempData["returnUrl"] = returnUrl;
            return(View(details));
        }
Exemple #11
0
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            // This doen't count login failures towards lockout only two factor authentication
            // To enable password failures to trigger lockout, change to shouldLockout: true
            var result = await SignInHelper.PasswordSignIn(model.UserName, model.Password, model.RememberMe, shouldLockout : false);

            switch (result)
            {
            case SignInStatus.Success:
                Session["date"] = String.Format("{0:dd/MM/yyyy}", DateTime.Today.Date);

                TDKTEntities td = new TDKTEntities();

                if (Session["year"] == null)
                {
                    Session["year"] = td.getYear().FirstOrDefault().ToString();
                }

                var tmp = this.UserManager.Users.FirstOrDefault(u => u.UserName == model.UserName);

                if (await this.UserManager.IsInRoleAsync(tmp.Id, "Theo dõi đơn vị"))
                {
                    Session["donvi"] = tmp.MaDonVi;
                }
                else
                {
                    Session["donvi"] = null;
                }

                return(RedirectToLocal(returnUrl));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.RequiresTwoFactorAuthentication:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl }));

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Đăng nhập không thành công!");
                return(View(model));
            }
        }
Exemple #12
0
        //[ValidateAntiForgeryToken]
        public async Task <IHttpActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(Ok(false));
            }

            // This doen't count login failures towards lockout only two factor authentication
            // To enable password failures to trigger lockout, change to shouldLockout: true
            var result = await SignInHelper.PasswordSignIn(model.Email, model.Password, model.RememberMe, shouldLockout : false);

            if (result == App_Start.SignInStatus.Success)
            {
                return(Ok(new { userName = model.Email }));
            }
            return(Ok(false));
        }
Exemple #13
0
        public async Task <HttpResponseMessage> SignIn(UserSignIn model)
        {
            if (model == null)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "No Data"));
            }
            if (ModelState.IsValid)
            {
                // This doesn't count login failures towards lockout only two factor authentication
                // To enable password failures to trigger lockout, change to shouldLockout: true
                var result = await SignInHelper.PasswordSignIn(model.UserName, model.Password, true, false);

                switch (result)
                {
                case Ullo.Models.SignInStatus.Success:
                    var user = await users.FindByNameAsync(model.UserName);

                    await SignInHelper.SignInAsync(user, true, false);

                    var account = new UserDetail();
                    account.UserName        = user.UserName;
                    account.FirstName       = user.FirstName;
                    account.LastName        = user.LastName;
                    account.FacebookId      = user.FacebookId;
                    account.isAuthenticated = true;
                    account.Route           = user.Route;
                    var rolesForUser = users.GetRoles(user.Id);
                    account.isAdmin = rolesForUser.Contains("Admin");
                    return(Request.CreateResponse(account));

                case Ullo.Models.SignInStatus.LockedOut:
                    return(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "LockedOut"));

                case Ullo.Models.SignInStatus.RequiresTwoFactorAuthentication:
                    return(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "RequiresTwoFactorAuthentication"));

                case Ullo.Models.SignInStatus.Failure:
                    return(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Failure"));

                default:
                    return(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Invalid"));
                }
            }
            return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
        }
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var user = await UserManager.FindAsync(model.Email, model.Password);

            if (user == null)
            {
                ModelState.AddModelError("", "Invalid login attempt.");
                return(View(model));
            }

            if (!user.EmailConfirmed)
            {
                ModelState.AddModelError("", "Email not verified.  Please check your email inbox.");
                return(View(model));
            }

            // This doen't count login failures towards lockout only two factor authentication
            // To enable password failures to trigger lockout, change to shouldLockout: true
            var result = await SignInHelper.PasswordSignIn(model.Email, 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 }));

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Invalid login attempt.");
                return(View(model));
            }
        }
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(Content("Lỗi! Đăng nhập không thành công! Vui lòng kiểm tra lại thông tin của bạn!"));
            }

            // This doen't count login failures towards lockout only two factor authentication
            // To enable password failures to trigger lockout, change to shouldLockout: true
            var user = await UserManager.FindByEmailAsync(model.Email);

            if (user == null)
            {
                return(Content("Tài khoản không tồn tại!"));
            }

            if (!(await UserManager.IsEmailConfirmedAsync(user.Id)))
            {
                return(Content("Tài khoản chưa được xác nhận! Vui lòng xác nhận email trước!"));
            }


            var result = await SignInHelper.PasswordSignIn(model.Email, model.Password, model.RememberMe, shouldLockout : false);

            switch (result)
            {
            case Turbo_Phim.Models.SignInStatus.Success:
                return(JavaScript("location.reload()"));

            case Turbo_Phim.Models.SignInStatus.LockedOut:
                return(View("Lockout"));

            case Turbo_Phim.Models.SignInStatus.RequiresTwoFactorAuthentication:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl }));

            case Turbo_Phim.Models.SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Lỗi! Đăng nhập không thành công! Vui lòng kiểm tra lại thông tin của bạn!");
                return(Content("Lỗi! Đăng nhập không thành công! Vui lòng kiểm tra lại thông tin của bạn!"));
            }
        }
Exemple #16
0
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            // This doen't count login failures towards lockout only two factor authentication
            // To enable password failures to trigger lockout, change to shouldLockout: true
            var user = await UserManager.FindByNameAsync(model.Email);

            if (user != null)
            {
                if (!await UserManager.IsEmailConfirmedAsync(user.Id))
                {
                    string callbackUrl = await SendEmailConfirmationTokenAsync(user.Id, "Confirm your account-Resend");

                    ViewBag.errorMessage = "You must have a confirmed email to log on.";
                    return(View("Error"));
                }
            }

            var result = await SignInHelper.PasswordSignIn(model.Email, model.Password, model.RememberMe, shouldLockout : false);

            switch (result)
            {
            case SignInStatus.Success:
                return(RedirectToLocal(returnUrl));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.RequiresTwoFactorAuthentication:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }));

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Invalid login attempt.");
                return(View(model));
            }
        }
Exemple #17
0
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            // Ceci ne comptabilise pas les échecs de connexion pour le verrouillage du compte
            // Pour que les échecs de mot de passe déclenchent le verrouillage du compte, utilisez shouldLockout: true
            var result = await SignInHelper.PasswordSignIn(model.Email, model.Password, model.RememberMe, shouldLockout : false);

            switch (result)
            {
            case SignInStatus.Success:
                return(RedirectToLocal(returnUrl));

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Invalid credentials.");
                return(View(model));
            }
        }
Exemple #18
0
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            // 这不会计入到为执行帐户锁定而统计的登录失败次数中
            // 若要在多次输入错误密码的情况下触发帐户锁定,请更改为 shouldLockout: true
            var result = await SignInHelper.PasswordSignIn(model.Email, model.Password, model.RememberMe, shouldLockout : false);

            switch (result)
            {
            case SignInStatus.Success:
                return(RedirectToLocal(returnUrl));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "无效的登录尝试。");
                return(View(model));
            }
        }
Exemple #19
0
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            //if (!ModelState.IsValid)
            //{
            //    return View(model);
            //}

            //// Require the user to have a confirmed email before they can log on.
            //var user = await UserManager.FindByNameAsync(model.Email);
            //if (user != null)
            //{
            //    if (!await UserManager.IsEmailConfirmedAsync(user.Id))
            //    {
            //        ViewBag.errorMessage = "You must have a confirmed email to log on.";
            //        return View("Error");
            //    }
            //}

            //// This doen't count login failures towards lockout only two factor authentication
            //// To enable password failures to trigger lockout, change to shouldLockout: true
            //var result = await SignInHelper.PasswordSignIn(model.Email, model.Password, model.RememberMe, shouldLockout: false);
            //switch (result)
            //{
            //    case SignInStatus.Success:
            //        return RedirectToLocal(returnUrl);
            //    case SignInStatus.LockedOut:
            //        return View("Lockout");
            //    case SignInStatus.RequiresTwoFactorAuthentication:
            //        return RedirectToAction("SendCode", new { ReturnUrl = returnUrl });
            //    case SignInStatus.Failure:
            //    default:
            //        ModelState.AddModelError("", "Account or password is incorrect.");
            //        return View(model);
            //}

            if (ModelState.IsValid)
            {
                model.Password = Utility.Md5HashingData(model.Password);
                var user = await UserManager.FindAsync(model.UserName, model.Password);

                //if (user == null)
                //{
                //    ModelState.AddModelError("", "Invalid username or password.");
                //}
                var result = await SignInHelper.PasswordSignIn(model.UserName, model.Password, model.RememberMe, shouldLockout : false);

                switch (result)
                {
                case SignInStatus.Success:
                    return(RedirectToLocal(returnUrl));

                case SignInStatus.LockedOut:
                    return(View("Lockout"));

                case SignInStatus.RequiresTwoFactorAuthentication:
                    return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl }));

                case SignInStatus.Failure:
                default:
                    ModelState.AddModelError("", ManagerResource.ERROR_INVALID_LOGIN);
                    return(View(model));
                }
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Exemple #20
0
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {            //通过微信登录
            var Isweixinlogin = model.IsWeiXinLogin == "1" && !string.IsNullOrEmpty(model.WeixinUser);

            ViewBag.IsWeiXinAuth = !string.IsNullOrEmpty(model.WeixinUser);
            returnUrl            = !string.IsNullOrWhiteSpace(returnUrl) ? returnUrl : (string.IsNullOrEmpty(model.Stateurl) ? "~/Manage/index" : model.Stateurl);
            if (Isweixinlogin)
            {
                ViewBag.WeiXinUser = model.WeixinUser;
                ViewBag.WeiXinUrl  = returnUrl;
            }
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            #region 密码安全监测
            var isDetectionOn = PasswordStrengthDetectionService.IsDetectionOn();
            if (isDetectionOn)
            {
                var ismatch = PasswordStrengthDetectionService.IsMatch(model.Password.Trim());
                if (ismatch)
                {
                    Session["IsPasswordStronger"] = true;
                }
                else
                {
                    Session["IsPasswordStronger"] = false;
                }
            }
            #endregion
            var result = await SignInHelper.PasswordSignIn(model.UserName, model.Password, model.RememberMe, shouldLockout : false);


            //var user = await UserManager.FindByNameAsync(model.UserName);
            //var roles = await UserManager.GetRolesAsync(user.Id);
            log4net.LogManager.GetLogger("RollingLog").Info(model.UserName + " Log in: " + result.ToString());
            switch (result)
            {
            case MvcBackend.App_Start.SignInStatus.Success:
                Session["MyMenu"] = null;
                if (Isweixinlogin)
                {
                    var user = ReadOnlyRepository.GetForUpdate(e => e.UserName == model.UserName.Trim());
                    //if (user == null) return Redirect(WeiXinAuthHtml.Replace("[url]", returnUrl));

                    if (string.IsNullOrEmpty(user.WeiXinAuthId))
                    {
                        user.WeiXinAuthId = model.WeixinUser;
                        Repository.Update(user);
                    }
                    else
                    {
                        var weixinuser = ReadOnlyRepository.Get(e => e.WeiXinAuthId == model.WeixinUser);
                        if (weixinuser != null && weixinuser.UserName != model.UserName)
                        {
                            ModelState.AddModelError("", "微信企业号已经认证过。");
                            return(View(model));
                        }
                    }
                }
                return(RedirectToLocal(returnUrl));

            case MvcBackend.App_Start.SignInStatus.LockedOut:
                return(View("Lockout"));

            case MvcBackend.App_Start.SignInStatus.RequiresTwoFactorAuthentication:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl }));

            case MvcBackend.App_Start.SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "登陆名或密码错误。");
                return(View(model));
            }
        }
Exemple #21
0
        //[Compress]
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (ModelState.IsValid)
            {
                // This doen't count login failures towards lockout only two factor authentication
                // To enable password failures to trigger lockout, change to shouldLockout: true
                var result = await SignInHelper.PasswordSignIn(model.UserName, model.Password, true, shouldLockout : false);

                switch (result)
                {
                case SignInStatus.Success:
                    Task T = new Task(() =>
                    {
                        UserHelper _UserHelp = new UserHelper();
                        _UserHelp.SendUserLogin(model.UserName);
                    });

                    T.Start();
                    //await SignInAsync(user, true);

                    ////Create cookie if select remember me to expire in a year.
                    //int timeout = model.RememberMe ? 525600 : 30; // Timeout in minutes, 525600 = 365 days.
                    //var ticket = new FormsAuthenticationTicket(model.UserName, model.RememberMe, timeout);
                    //string encrypted = FormsAuthentication.Encrypt(ticket);
                    //var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encrypted);
                    //cookie.Expires = System.DateTime.Now.AddMinutes(timeout);// Not my line
                    //cookie.HttpOnly = true; // cookie not available in javascript.
                    //Response.Cookies.Add(cookie);

                    return(RedirectToLocal(returnUrl));

                //return RedirectToLocal(returnUrl);
                case SignInStatus.LockedOut:
                    return(View("Lockout"));

                case SignInStatus.RequiresVerification:
                    return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl }));

                case SignInStatus.Failure:
                default:
                    ModelState.AddModelError("", "Invalid login attempt.");
                    return(View(model));
                }

                //var user = await UserManager.FindAsync(model.UserName, model.Password);
                //if (user != null)
                //{
                //    await SignInAsync(user, true);

                //    //Create cookie if select remember me to expire in a year.
                //    int timeout = model.RememberMe ? 525600 : 30; // Timeout in minutes, 525600 = 365 days.
                //    var ticket = new FormsAuthenticationTicket(model.UserName, model.RememberMe, timeout);
                //    string encrypted = FormsAuthentication.Encrypt(ticket);
                //    var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encrypted);
                //    cookie.Expires = System.DateTime.Now.AddMinutes(timeout);// Not my line
                //    cookie.HttpOnly = true; // cookie not available in javascript.
                //    Response.Cookies.Add(cookie);

                //    return RedirectToLocal(returnUrl);
                //}
                //else
                //{
                //    ModelState.AddModelError("", "Invalid username or password.");
                //}
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }