我尝试使用ActiveDirectoryMembershipProvider.ChangePassword
LDAP
更改我的帐户密码
MembershipUser currentUser = Membership.GetUser(User.Identity.Name, userIsOnline: true);
changePasswordSucceeded = currentUser.ChangePassword(model.OldPassword, model.NewPassword);
如果输入错误的旧密码,ChangePassword
将返回false。
我的问题是:来自ChangePassword
方法的错误结果意味着我的旧密码错了吗?如果没有,我怎么能检测到我输入了错误的密码?
谢谢!
答案 0 :(得分:1)
如果更新成功,MembershipUser.ChangePassword()方法将返回true。如果旧密码错误,它不会提供任何信息。
由于此方法调用底层成员资格提供程序的ChangePassword()方法,如果成员资格提供程序对例如新密码不匹配的密码大小有限制,它也可能抛出异常。
如果
,则抛出ArgumentException
newPassword小于MinRequiredPasswordLength属性中指定的最小密码大小
newPassword包含的MinRequiredNonAlphanumericCharacters属性中指定的非字母字符数少于
newPassword未通过PasswordStrengthRegularExpression属性中定义的正则表达式进行验证。
如果
,则会引发MembershipPasswordException
- newPassword无法满足Active Directory服务器定义的复杂性要求。
要检查旧密码,您可以使用MembershipProvider.ValidateUser()方法。