如果我不知道旧密码,如何更改密码?
How, I can change password, if I do not know the old password?
我需要创建方法,如果我不知道旧密码,可以在数据库中更改密码。例如,我有下一个代码:
public IHttpActionResult ChangePassword(ChangePasswordBindingModel model)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var result = UserManager.ChangePassword(User.Identity.GetUserId(), model.OldPassword,
model.NewPassword);
if (!result.Succeeded)
{
return GetErrorResult(result);
}
return Ok();
}
在此代码中需要 "model.OldPassword" 但用户不知道旧密码。
我只有密码和当前用户 ID。
好吧,我不知道这是否是最优的,但这很容易。
第一个:
var code = await UserManager.GeneratePasswordResetTokenAsync(userId);
然后
var result = await UserManager.ResetPasswordAsync(userId, code, someNewPassword);
您甚至可以将其包装在扩展方法中
public static class UserManagerEx
{
public static async Task<IdentityResult> ForceChangePassword<T, TUserId>(
this UserManager<T, TUserId> userManager,
TUserId userId,
string newPassword)
where T : class, IUser<TUserId>
where TUserId : IEquatable<TUserId>
{
var code = await userManager.GeneratePasswordResetTokenAsync(userId);
var result = await userManager.ResetPasswordAsync(userId, code, newPassword);
return result;
}
}
然后调用它:
var result = UserManager.ForceChangePassword(userId, newPassword);
我需要创建方法,如果我不知道旧密码,可以在数据库中更改密码。例如,我有下一个代码:
public IHttpActionResult ChangePassword(ChangePasswordBindingModel model)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var result = UserManager.ChangePassword(User.Identity.GetUserId(), model.OldPassword,
model.NewPassword);
if (!result.Succeeded)
{
return GetErrorResult(result);
}
return Ok();
}
在此代码中需要 "model.OldPassword" 但用户不知道旧密码。 我只有密码和当前用户 ID。
好吧,我不知道这是否是最优的,但这很容易。
第一个:
var code = await UserManager.GeneratePasswordResetTokenAsync(userId);
然后
var result = await UserManager.ResetPasswordAsync(userId, code, someNewPassword);
您甚至可以将其包装在扩展方法中
public static class UserManagerEx
{
public static async Task<IdentityResult> ForceChangePassword<T, TUserId>(
this UserManager<T, TUserId> userManager,
TUserId userId,
string newPassword)
where T : class, IUser<TUserId>
where TUserId : IEquatable<TUserId>
{
var code = await userManager.GeneratePasswordResetTokenAsync(userId);
var result = await userManager.ResetPasswordAsync(userId, code, newPassword);
return result;
}
}
然后调用它:
var result = UserManager.ForceChangePassword(userId, newPassword);