ASP.Net成员身份更改密码方法不会显示

时间:2012-07-18 15:02:40

标签: c# asp.net asp.net-mvc asp.net-mvc-3 asp.net-membership

我已经实施了自定义成员资格提供程序我的代码示例如下所示

public class CustomMembershipProvider : MembershipProvider
{
   public override bool ChangePassword(string username, string oldPassword, string newPassword)
   {
      //logic for changing password
   }

   public override bool ValidateUser(string username, string password)
   {
      //logic for validating user credentials
   }
}

然后,我使用

web.config文件中注册了上述自定义成员资格
<membership defaultProvider="CustomMembershipProvider">
 <providers>
  <clear/>
   <add name ="CustomMembershipProvider" type="MyApplication.CustomMembershipProvider"/>
 </providers>
</membership>

现在,当我想验证用户时,我可以调用

System.Web.Security.Membership.ValidateUser(username, password);

这很有效。但是,当我想调用方法来更改密码时,我尝试调用:

System.Web.Security.Membership.ChangePassword(username, oldPassword, newPassword);

它给出了智能感知和编译错误,指出System.Web.Security.Membership不包含ChangePassword的定义。

如何将ChangePassword方法与System.Web.Security.Membership关联起来,或者我是否以错误的方式处理此问题?

2 个答案:

答案 0 :(得分:4)

确保您的会员资格提供者定义明确:

<membership defaultProvider="CustomMembershipProvider">
  <providers>
    <clear />
    <add connectionStringName="ConnString" enablePasswordReset="true" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" name="CustomMembershipProvider" type="MyMembershipProvider" />
  </providers>
</membership>

我认为MyApplication.MyMembershipProvider是您的自定义成员资格类。我会重命名为其他内容,以便以后更容易阅读web.config,所以当你看到它时你就知道什么是类。

但是,我认为您的问题的答案是,您需要使用成员资格中的提供程序类。由于您定义了自定义提供程序,因此您将使用它来执行一些自定义更改。

var didChange = System.Web.Security.Membership.Provider.ChangePassword("", "", "");

答案 1 :(得分:0)

如果WebSecurity.ChangePassword中的任何参数为null,则不会调用自定义Memembership提供程序更改密码