상속: Carrotware.CMS.UI.Components.FormModelBase
		public async Task<ActionResult> Login(LoginInfo model) {
			bool rememberme = false;

			model.ReconstructSettings();
			this.ViewData[LoginInfo.Key] = model;

			LoadPage(model.Settings.Uri);

			var settings = model.Settings;

			string partialName = settings.PostPartialName;

			if (settings.UseValidateHuman) {
				bool IsValidated = model.ValidateHuman.ValidateValue(model.ValidationValue);
				if (!IsValidated) {
					ModelState.AddModelError("ValidationValue", model.ValidateHuman.AltValidationFailText);
					model.ValidationValue = String.Empty;
				}
			}

			if (ModelState.IsValid) {
				ModelState.Clear();

				ApplicationUser user = await securityHelper.UserManager.FindByNameAsync(model.UserName);
				SignInStatus result = await securityHelper.SignInManager.PasswordSignInAsync(model.UserName, model.Password, rememberme, shouldLockout: true);

				model.LogInStatus = result;

				switch (result) {
					case SignInStatus.Success:
						await securityHelper.UserManager.ResetAccessFailedCountAsync(user.Id);
						break;

					case SignInStatus.RequiresVerification:
						if (!String.IsNullOrEmpty(settings.PostPartialNameVerification)) {
							partialName = settings.PostPartialNameVerification;
						}
						break;

					case SignInStatus.LockedOut:

						ModelState.AddModelError(String.Empty, "User locked out.");

						if (!String.IsNullOrEmpty(settings.PostPartialNameLockout)) {
							partialName = settings.PostPartialNameLockout;
						}
						break;

					case SignInStatus.Failure:
					default:
						ModelState.AddModelError(String.Empty, "Invalid login attempt.");

						if (!String.IsNullOrEmpty(settings.PostPartialNameFailure)) {
							partialName = settings.PostPartialNameFailure;
						}

						if (user.LockoutEndDateUtc.HasValue && user.LockoutEndDateUtc.Value < DateTime.UtcNow) {
							user.LockoutEndDateUtc = null;
							user.AccessFailedCount = 1;
							securityHelper.UserManager.Update(user);
						}

						break;
				}
			}

			return PartialView(partialName, model);
		}
예제 #2
0
        public HtmlHelper <LoginInfo> GetModelHelper(string partialName)
        {
            _model = InitLoginInfo(partialName);

            return(InitHelp());
        }