如何将密码重置为其他用户的管理员?
我尝试使用以下代码
var code = await UserManager.GeneratePasswordResetTokenAsync(user.Id);
var result = await UserManager.ResetPasswordAsync(user.Id, code, vm.NewPassword);
当单步执行GeneratePasswordResetTokenAsync时,会调用控制器的dispose方法。
有人可以赐教我吗?
答案 0 :(得分:8)
您还可以扩展UserManager并公开一个不需要任何信息的显式AdminChangePassword API。在扩展UserManager的ApplicationUserManager中的这样的东西应该工作:
public IdentityResult ChangePasswordAdmin(string userId, string newPassword) {
var user = FindById(userId);
// validate password using PasswordValidator.Validate
user.PasswordHash = PasswordHasher.HashPassword(newPassword);
Update(user);
}
答案 1 :(得分:-1)
我应该在发布问题之前搜索更多内容。
显然我需要将UserTokenProvider与DataProtectorTokenProvider连接起来。
但是我不明白什么是DataProtector,如果有人可以在这里解释,会很高兴。
var dataProtectionProvider = options.DataProtectionProvider;
if (dataProtectionProvider != null)
{
manager.UserTokenProvider = new DataProtectorTokenProvider<MyUser>(dataProtectionProvider.Create("ASP.NET Identity"));
}
找到答案here