在评估方法签名时,要求在更改方法签名时知道旧密码。
membershipUser.ChangePassword(userWrapper.OldPassword, userWrapper.Password)
有没有办法在不知道旧密码的情况下更改密码?
发布于 2011-02-16 16:06:16
string username = "username";
string password = "newpassword";
MembershipUser mu = Membership.GetUser(username);
mu.ChangePassword(mu.ResetPassword(), password);
发布于 2014-05-14 20:33:13
这里的其他答案是正确的,但可能会使密码处于未知状态。
如果密码不符合Web.Config中的要求(最小长度等),ChangePassword
将抛出异常。但只有在调用了ResetPassword
之后,它才会失败,所以原始用户或试图更改密码的人不会知道密码。在更改密码之前,请检查复杂性要求,以避免出现这种情况:
var user = Membership.GetUser(userName, false);
if ((newPassword.Length >= Membership.MinRequiredPasswordLength) &&
(newPassword.ToCharArray().Count(c => !Char.IsLetterOrDigit(c)) >=
Membership.MinRequiredNonAlphanumericCharacters) &&
((Membership.PasswordStrengthRegularExpression.Length == 0) ||
Regex.IsMatch(newPassword, Membership.PasswordStrengthRegularExpression))) {
user.ChangePassword(user.ResetPassword(), newPassword);
} else {
// Tell user new password isn't strong enough
}
发布于 2011-02-16 16:05:42
您需要在更改用户密码之前对其进行重置,并将生成的密码传递给ChangePassword
。
string randompassword = membershipUser.ResetPassword();
membershipUser.ChangePassword(randompassword , userWrapper.Password)
或内联:
membershipUser.ChangePassword(membershipUser.ResetPassword(), userWrapper.Password)
https://stackoverflow.com/questions/5013901
复制相似问题