Esempio n. 1
0
        public virtual ActionResult ManageLogin(LoginViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            var user            = model.AsUser();
            var userLoginStatus = _userService.ValidateUser(user.UserName, user.Password);

            switch (userLoginStatus)
            {
            case UserLoginStatus.Success:
                user = _userService.GetAll().FirstOrDefault(n => n.UserName == user.UserName);
                break;

            case UserLoginStatus.IsNotExist:
                TempData["StatusMessageData"] = "账号不存在!";

                break;

            case UserLoginStatus.InvalidCredentials:
                TempData["StatusMessageData"] = "帐号或密码错误,请重新输入!";

                break;

            case UserLoginStatus.NotActivated:
                TempData["StatusMessageData"] = "账号未激活!";

                break;

            case UserLoginStatus.Banned:
                TempData["StatusMessageData"] = "账号被封禁!";

                break;

            case UserLoginStatus.UnknownError:
                TempData["StatusMessageData"] = "未知错误,请重试!";
                break;

            default:
                TempData["StatusMessageData"] = "未知错误,请重试!";

                break;
            }

            if (userLoginStatus != UserLoginStatus.Success)
            {
                return(View(model));
            }
            FormsAuthentication.SignOut();

            var adminCookie = new HttpCookie("ChiakiAdminCookie" + user.Id)
            {
                Value = UserPasswordHelper.MD5(true.ToString())
            };

            if (!string.IsNullOrEmpty(FormsAuthentication.CookieDomain))
            {
                adminCookie.Domain = FormsAuthentication.CookieDomain;
            }
            adminCookie.HttpOnly = true;

            Response.Cookies.Add(adminCookie);
            FormsAuthentication.SetAuthCookie(user.UserName, model.RememberMe);

            var returnUrl = string.IsNullOrEmpty(model.ReturnUrl)
                ? Request.QueryString.Get("ReturnUrl")
                : model.ReturnUrl;

            if (string.IsNullOrWhiteSpace(returnUrl))
            {
                return(RedirectToAction(MVC.Admin.Admin.Home()));
            }
            return(Redirect(returnUrl));
        }