2011-09-01 58 views
0

我正在使用c#在.net中執行應用程序,我想使用更改密碼控制。ChangePassword控制不起作用

問題是......我總是收到「密碼不正確或新密碼無效,新密碼長度最小的錯誤:1.所需的非字母數字字符:0」。

即使我提供了正確的密碼參數,並且在我的web.config中設置了Meberhip provider中的(minRequiredPasswordLength =「1」minRequiredNonalphanumericCharacters =「0」)。

<asp:ChangePassword ID="ChangePassword1" runat="server" BackColor="#EFF3FB" BorderColor="#B5C7DE" 
    BorderPadding="4" BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" 
    Font-Size="0.8em" ForeColor="#333333" 
    ChangePasswordButtonText="Change" 
    ChangePasswordTitleText="Password change" 
    ConfirmNewPasswordLabelText="Retype new password:" 
    NewPasswordLabelText="New Password:"> 
</asp:ChangePassword> 

我執行我自己的MembershipProvider:

public class MyMembershipProvider : MembershipProvider 
{ 
    ... 

    public override int MinRequiredNonAlphanumericCharacters 
    { 
     get 
     { 
      return 0; 
     } 
    } 

    ... 
} 

的Web.config:

<membership defaultProvider="MyMembershipProvider" userIsOnlineTimeWindow="15"> 
    <providers> 
    <add name="MyMembershipProvider" 
     type="My.Security.BsAsMembershipProvider" 
     enablePasswordRetrieval="true" 
     enablePasswordReset="true" 
     requiresQuestionAndAnswer="false" 
     applicationName="MyApp" 
     requiresUniqueEmail="true" 
     passwordFormat="Clear" 
     passwordStrengthRegularExpression="" 
     minRequiredNonalphanumericCharacters="0" 
     description="My custom membership provider" 
    /> 
    </providers> 
</membership> 

任何想法?謝謝。

+0

讓我們在web.config中看到您的Membership配置 – BrokenGlass

+0

完成...該帖子已更新。 – Gabriel

+0

這個鏈接可以幫助你嗎? http://stackoverflow.com/questions/5048460/asp-net-membership-change-password-not-working – Niklas

回答

0

我發現了這個問題,我沒有實現MyMemberShipUser ChangePassword方法。

public class MyMembershipUser : MembershipUser 
{ 
    public MyMembershipUser() 
    { 
    } 

    public MyMembershipUser(string username) 
     : base("MyMembershipProvider", username, null, "", "", "", true, true, DateTime.Today, DateTime.Today, DateTime.Today, DateTime.Today, DateTime.Today) 
    { 
    } 

    public override bool ChangePassword(string oldPassword, string newPassword)   
    { 

     //Do something 

    } 
}