Смена пароля не удалась. Пожалуйста, исправьте ошибки и попробуйте снова. - PullRequest
0 голосов
/ 30 марта 2012

Я не могу изменить свой пароль при запуске приложения. Он всегда зависал в Сводке проверки, и я не могу изменить свой пароль. Есть ли в коде что-то, что нужно изменить или необходима конфигурация? Это ошибка, которую я получаю.

Смена пароля не удалась. Пожалуйста, исправьте ошибки и попробуйте снова. Текущий пароль неверен или новый пароль недействителен.

Но я уверен, что правильно ввел свой текущий пароль.

MODEL AccountModel.cs

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using System.Web.Mvc;
using System.Web.Security;

namespace Customer.Models
{    
    public class ChangePasswordModel
    {
        [Required]
        [DataType(DataType.Password)]
        [Display(Name = "Current password")]
        public string OldPassword { get; set; }

        [Required]
        [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "New password")]
        public string NewPassword { get; set; }

        [DataType(DataType.Password)]
        [Display(Name = "Confirm new password")]
        [Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")]
        public string ConfirmPassword { get; set; }
    }
}

Контроллер

// GET: /Account/ChangePassword
[Authorize]
public ActionResult ChangePassword()
{
    return View();
}

// POST: /Account/Register
[HttpPost]
public ActionResult Register(RegisterModel model)
{
    if (ModelState.IsValid)
    {
        // Attempt to register the user
        //MembershipCreateStatus createStatus;

        try
        {
            MembershipService.CreateUser(model.UserName, model.FullName, model.Password, model.Email);

            //if (createStatus == MembershipCreateStatus.Success)
            //{
                FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */);
                return RedirectToAction("Index", "Home");
            //}
        }
        catch(ArgumentException ae)
        {
            ModelState.AddModelError("", ae.Message);
        }
    }

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

// POST: /Account/ChangePassword
[Authorize]
[HttpPost]
public ActionResult ChangePassword(ChangePasswordModel model)
{
    if (ModelState.IsValid)
    {
        // ChangePassword will throw an exception rather
        // than return false in certain failure scenarios.
        bool changePasswordSucceeded;

        try
        {
            MembershipUser currentUser = Membership.GetUser(User.Identity.Name, true);
            changePasswordSucceeded = currentUser.ChangePassword(model.OldPassword, model.NewPassword);
        }
        catch (Exception)
        {
            changePasswordSucceeded = false;
        }

        if (changePasswordSucceeded)
        {
            return RedirectToAction("ChangePasswordSuccess");
        }
        else
        {
            ModelState.AddModelError("", "The current password is incorrect or the new password is invalid.");
        }
    }

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


// GET: /Account/ChangePasswordSuccess
public ActionResult ChangePasswordSuccess()
{
    return View();
}

1 Ответ

1 голос
/ 30 марта 2012

Проверка работает очень хорошо, поэтому вы получаете «Текущий пароль неверный или новый пароль недействителен».в вашем сообщении об ошибке.Что-то происходит с вашим провайдером, который делает ваш флаг неверным ... отладка в этом месте

changePasswordSucceeded = currentUser.ChangePassword(model.OldPassword, model.NewPassword);

Дайте мне знать, что вы нашли!

...