首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >asp.net成员在不知道旧密码的情况下更改密码

asp.net成员在不知道旧密码的情况下更改密码
EN

Stack Overflow用户
提问于 2011-02-16 16:01:09
回答 9查看 47.8K关注 0票数 60

在评估方法签名时,要求在更改方法签名时知道旧密码。

membershipUser.ChangePassword(userWrapper.OldPassword, userWrapper.Password)

有没有办法在不知道旧密码的情况下更改密码?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2011-02-16 16:06:16

 string username = "username";
 string password = "newpassword";
 MembershipUser mu = Membership.GetUser(username);
 mu.ChangePassword(mu.ResetPassword(), password);
票数 116
EN

Stack Overflow用户

发布于 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
}
票数 24
EN

Stack Overflow用户

发布于 2011-02-16 16:05:42

您需要在更改用户密码之前对其进行重置,并将生成的密码传递给ChangePassword

string randompassword = membershipUser.ResetPassword();
membershipUser.ChangePassword(randompassword , userWrapper.Password)

或内联:

membershipUser.ChangePassword(membershipUser.ResetPassword(), userWrapper.Password)
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5013901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档