2012-03-30 15 views
-2

私のアプリケーションを実行するときに私のパスワードを変更することはできません。それは常にValidation Summaryに突き当たり、パスワードを変更できません。変更や設定が必要なコードに何かが必要ですか?これは私が受け取るエラーです。パスワードの変更に失敗しました。エラーを修正してから、もう一度お試しください。

パスワード変更に失敗しました。エラーを修正してから、もう一度お試しください。 現在のパスワードが正しくないか、新しいパスワードが無効です。

しかし、現在のパスワードを正しく入力することができます。あなたは、「現在のパスワードが間違っていますか、新しいパスワードがある理由

モデルは、検証がうまく働いている 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(); 
} 
+0

例外はありますか?モデルは有効に戻ってきますか? –

+0

それは私が推測すると無効です。 –

+0

それを確認できますか? –

答えて

1

、thatsの無効。"あなたのエラー報告書に。何かあなたのフラグがtrueにならないために引き起こしているあなたのメンバーシッププロバイダーで起こっている...このスポットにデバッグ

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

私はあなたが見つけるものを知ってみましょう!