Identity 2.0由管理员重置密码

时间:2014-05-21 12:31:34

标签: c# asp.net-identity asp.net-identity-2 asp.net-mvc-5.1

如何将密码重置为其他用户的管理员?

我尝试使用以下代码

var code = await UserManager.GeneratePasswordResetTokenAsync(user.Id);
var result = await UserManager.ResetPasswordAsync(user.Id, code, vm.NewPassword);

当单步执行GeneratePasswordResetTokenAsync时,会调用控制器的dispose方法。

有人可以赐教我吗?

2 个答案:

答案 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