Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如果您没有';你不知道当前的密码吗?_Asp.net_Membership Provider - Fatal编程技术网

Asp.net 如果您没有';你不知道当前的密码吗?

Asp.net 如果您没有';你不知道当前的密码吗?,asp.net,membership-provider,Asp.net,Membership Provider,问题是,没有方法: bool ChangePassword(string newPassword); 你必须知道当前密码(可能是散列和遗忘的)。这是一个简单的密码,我浪费了太多时间。希望这篇文章能让其他人免去像我一样用力拍打他们额头的痛苦 解决方案中,随机重置密码并将其传递到更改方法中 MembershipUser u = Membership.GetUser(); u.ChangePassword(u.ResetPassword(), "myAwesomePassword"); 如果req

问题是,没有方法:

bool ChangePassword(string newPassword);

你必须知道当前密码(可能是散列和遗忘的)。

这是一个简单的密码,我浪费了太多时间。希望这篇文章能让其他人免去像我一样用力拍打他们额头的痛苦

解决方案中,随机重置密码并将其传递到更改方法中

MembershipUser u = Membership.GetUser();
u.ChangePassword(u.ResetPassword(), "myAwesomePassword");

如果requiresQuestionAndAnswer=“true”,则无法更改密码

我有这方面的工作

在web.config中创建了两个成员资格提供程序

我正在使用AspNetSqlMembershipProviderReset提供程序重置密码,因为它具有requiresQuestionAndAnswer=false,其中AspNetSqlMembershipProvider是使用的默认提供程序

我编写了以下代码来重置用户的密码

public bool ResetUserPassword(字符串psUserName、字符串psNewPassword) { 尝试 { //使用secound会员资格提供程序获取会员资格用户详细信息,所需问题答案设置为false

        MembershipUser currentUser = Membership.Providers["AspNetSqlMembershipProviderReset"].GetUser(psUserName,false);

        //Reset the user password.
        String vsResetPassword = currentUser.ResetPassword();            

        //Change the User password with the required password            
        currentUser.ChangePassword(vsResetPassword, psNewPassword);
        //Changed the comments to to force the user to change the password on next login attempt
        currentUser.Comment = "CHANGEPASS";
        //Check if the user is locked out and if yes unlock the user
        if (currentUser.IsLockedOut == true)
        {
            currentUser.UnlockUser();
        }
        Membership.Providers["AspNetSqlMembershipProviderReset"].UpdateUser(currentUser);            return true;
    }
    catch (Exception ex)
    {
        throw ex;
        return false;
    }
}

嘿,来吧。不要因为回答自己的问题而投反对票。FAQ鼓励这样做。请看反对票(不是我!)是在答案被移到这里之前。之前它说答案在问题中。我不太喜欢投票否决那些刚刚加入的人-最好是编辑来帮助他们。是的,他也得到了漂亮的徽章!!@Harryyott doh…我想下次我们中的一个人应该留下一条评论,表明我们正在编辑…所以我们不会浪费时间做同样的事情。在找到这个答案之前,我浪费了很多时间,谢谢。你应该把你的问题分开并添加一个答案。@mcqwerty,现在我们已经把你的答案分开了,你应该“接受”你自己的答案很好,我用我们版本的ChangePassword控件(管理员为用户更改密码)做到了这一点再来一次,他得到了一枚徽章…@Harryyott上次我试过了,你不能接受你自己的答案。