在他使用 aspnet 会员提供程序达到 maxInvalidPasswordAttempts 后,如何重置用户密码?
问问题
2649 次
3 回答
0
这里只是一个疯狂的猜测...... MembershipProvider.ResetPassword()?
于 2012-07-03T04:46:11.390 回答
0
于 2012-07-03T04:53:10.323 回答
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
和PasswordSalt
字段aspnet_Membership
从另一个已知用户复制到“丢失”的用户,但这是一个可怕的黑客攻击。
于 2012-07-03T04:53:29.780 回答