1

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

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或者我是否以错误的方式解决了这个问题?

4

2 回答 2

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是您的自定义 Membership 课程。我会重命名为其他web.config名称,以便以后更容易阅读,所以当你看到它时你知道它是什么类。

但是,我相信您的问题的答案是,您需要利用 Membership 中的 Provider 类。由于您定义了一个自定义提供程序,您将使用它来执行一些自定义更改。

var didChange = System.Web.Security.Membership.Provider.ChangePassword("", "", "");
于 2012-07-18T15:08:38.230 回答
0

如果 WebSecurity.ChangePassword 中的任何参数为空,则不会调用 Custom Memembership provider Change Password

于 2015-11-29T07:45:57.927 回答