如何在asp.net membershipprovider中重置用户的密码?

时间:2012-07-03 04:43:58

标签: asp.net-mvc-3 security asp.net-membership membership-provider

如何在使用aspnet成员资格提供程序达到maxInvalidPasswordAttempts后重置userspassword?

3 个答案:

答案 0 :(得分:0)

这里只是猜测...... MembershipProvider.ResetPassword()

答案 1 :(得分:0)

答案 2 :(得分:0)

我假设这是在管理员用户使用新的已知密码覆盖现有用户密码(或忘记我的密码重置类型功能)的上下文中。有一个技巧,因为您需要先“随机”重置密码才能获得传递给ResetPassword的已知密码:

    public bool ResetUserPassword(Guid userId, string newPassword)
    {
        MembershipUser user = Membership.Provider.GetUser(userId, false);
        // Unlock the user account if necessary
        user.UnlockUser();
        Membership.UpdateUser(user);
        // Trick here is that have to reset it randomly first to be able to provide a new known password
        string tmpPassword = user.ResetPassword();
        return user.ChangePassword(tmpPassword, newPassword);
     }

还有另一种方法,即将Password表中的PasswordFormat(哈希),PasswordSaltaspnet_Membership字段直接从另一个已知用户复制到“丢了”一个,但这是一个可怕的黑客。