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

时间:2017-07-31 19:49:48

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

使用ASP.NET身份我需要能够在管理级别执行ChangePassword,而无需知道现有用户的密码。不幸的是,UserManager.ChangePasswordAsync需要更改现有密码。

我的解决方法是使用ResetPassword功能。但是,而不是使用电子邮件,只需在幕后做所有事情如下:

var code = await _userManager.GeneratePasswordResetTokenAsync(user);
await _userManager.ResetPasswordAsync(user, code, newPassword);

但密码重置/更新无效,我没有收到任何错误。我假设它可能来自一些事情。

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

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

0 个答案:

没有答案