Compare (password) attribute

前端 未结 2 1356
长发绾君心
长发绾君心 2021-02-04 03:43

I\'d like to create a view model for a new user using the code below. The \"User\" class contains just the two properties (simplified for now) that I will persist to the databas

2条回答
  •  谎友^
    谎友^ (楼主)
    2021-02-04 04:17

    I fixed this issue using two fields and comparing on server (via unobtrusive JavaScript):

        [Required(ErrorMessage = @"The new password is required")]
        [StringLength(25, ErrorMessage = @"The new password must be at least {2} characters long", MinimumLength = 4)]
        [DataType(DataType.Password)]
        [Display(Name = @"New Password")]
        public string NewPassword { get; set; }
    
        [Required(ErrorMessage = @"The confirmation of password is required")]
        [StringLength(25, ErrorMessage = @"The confirmation of new password must be at least {2} characters long", MinimumLength = 4)]
        [DataType(DataType.Password)]
        [Display(Name = @"Confirm New Password")]
        public string ConfirmPassword { get; set; }
    

    Server-side code:

        [HttpPost]
        public ViewResult ChangeUserPassword(ChangePasswordModel model)
        {
            Logger.Debug(LogBuilder.MethodEntry("ChangeUserPassword"));
    
            if (model == null)
            {
                throw new ArgumentNullException("model");
            }
    
            if (model.NewPassword != model.ConfirmPassword)
            {
                ModelState.AddModelError("", Messages.ConfirmPasswordError);
    
                return View(model);
            }
    
            if (ModelState.IsValid)
            {
                var changePasswordCompleted = false;
    
                try
                {
                    var userName = CurrentPerson.UserDetails.UserName;
                    var membershipUser = Membership.GetUser(userName);
    
                    if (membershipUser != null)
                    {
                        changePasswordCompleted = membershipUser.ChangePassword(model.OldPassword, model.NewPassword);
                    }
                }
                catch (Exception exception)
                {
                    changePasswordCompleted = false;
    
                    Logger.Error(LogBuilder.LogMethodError("ChangeUserPassword", exception));
                }
    
                if (changePasswordCompleted)
                {
                    return View("ChangePasswordCompleted");
                }
            }
    
            ModelState.AddModelError("", Messages.ChangePasswordError);
    
            return View(model);
        }
    

提交回复
热议问题