我已经实施了自定义成员资格提供程序我的代码示例如下所示
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
关联起来,或者我是否以错误的方式处理此问题?
答案 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提供程序更改密码