【问题标题】:ASP.Net Membership Change Password method does not show upASP.Net Membership Change Password 方法不显示
【发布时间】:2012-07-17 16:01:03
【问题描述】:

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

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 调用,还是我以错误的方式处理此问题?

【问题讨论】:

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


    【解决方案1】:

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

    <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("", "", "");
    

    【讨论】:

    • Visual Studio 的错误是“System.Web.Security.Membership”不包含“ChangePassword”的定义
    • 运气不好。我尝试了您的 web.config 更改以及整个解决方案的重建,但它仍然没有出现。
    • 抱歉,我很快就更新了!我没有意识到我的部分答案没有发布。
    • 您的粗体回答部分解决了我的问题。谢谢!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-29
      • 2011-08-11
      • 1970-01-01
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多