C# ASP.NET Identity UserManager.ResetPasswordAsync不发送电子邮件(仅限代码)

C# ASP.NET Identity UserManager.ResetPasswordAsync不发送电子邮件(仅限代码),c#,asp.net,asp.net-mvc,asp.net-identity,C#,Asp.net,Asp.net Mvc,Asp.net Identity,使用ASP.NET标识,我需要能够在不知道现有用户密码的情况下在管理级别更改密码。不幸的是,UserManager.ChangePasswordAsync需要更改现有密码 我的解决方法是使用ResetPassword功能。但与其使用电子邮件,不如在幕后做以下事情: var code = await _userManager.GeneratePasswordResetTokenAsync(user); await _userManager.ResetPasswordAsync(user, code

使用ASP.NET标识,我需要能够在不知道现有用户密码的情况下在管理级别更改密码。不幸的是,UserManager.ChangePasswordAsync需要更改现有密码

我的解决方法是使用ResetPassword功能。但与其使用电子邮件,不如在幕后做以下事情:

var code = await _userManager.GeneratePasswordResetTokenAsync(user);
await _userManager.ResetPasswordAsync(user, code, newPassword);
但是,密码重置/更新不起作用,我没有收到任何错误。我想可能是因为一些事情

  • 调用GeneratePasswordReset时,AspNetUsers表中是否有存储此代码的字段?如果有的话,请告诉我这个字段是什么,因为我使用的是CustomUserStore,而我的用户表中没有任何字段
  • 由于我使用的是自定义用户存储,我是否还需要实现另一个界面,例如:IUserSecurityStampStore
  • 更新:


    我发现Identity使用SecurityStamp字段生成令牌,并检查在生成和重置密码时创建的令牌。我将SecurityStamp字段添加到我的自定义用户表中,并查看它是在创建新用户后设置的。然后我用上面的代码去更改用户的密码,但是仍然没有更改,没有错误。我一定错过了什么。

    嗨。你发现了吗?@HenrikClausen是的,我没有在我的自定义用户存储中实现所有功能。要么就是这样,要么就是我的自定义类中缺少了一两个属性。对不起,我记不起我到底做了什么。我不确定你是否也在使用定制商店。如果是,请按照ASP.NET核心文档中的确切说明进行操作。如果您的情况不是这样,而您只是使用默认值,我很抱歉,但我不确定为什么它对您不起作用。@HenrikClausen