c# - 如何从 WebAPI 更新 AspNetUsers 表中现有用户记录的密码
问题描述
我是 Web API 的新手,在这里我正在使用基于令牌的身份验证。除了更新密码功能外,我使用 AspNetUsers 表完成了所有登录和注册过程。
在这里,我通过传递新密码更新了 HashedPassword 字段。当我尝试获取特定用户的令牌时,它返回一些与 passwordHash 格式相关的错误,因为它直接保存新密码而不使用哈希。
代码 :
public string updateUserData(string mEmail,string mPassword)
{
if (ModelState.IsValid)
{
var userStore = new UserStore<ApplicationUser>(new ApplicationDbContext());
var manager = new UserManager<ApplicationUser>(userStore);
ApplicationUser AppModel = manager.FindByEmail(mEmail);
AppModel.PasswordHash = mPassword;
manager.Update(AppModel);
return "Success";
}
return "Update Failed";
}
任何人都可以帮助我以正确的方式做到这一点。如果我犯了任何愚蠢的错误,我对此并不陌生,我对此感到抱歉。
解决方案
创建一个密码重置令牌,然后使用它来更改密码。例子:
var user = await manager.FindByIdAsync(id);
var token = await manager.GeneratePasswordResetTokenAsync(user);
var result = await manager.ResetPasswordAsync(user, token, "NewPassword");
推荐阅读
- python - 像 pip.exe 这样的可执行文件是否需要 python 才能工作?
- javascript - 是否可以跨子域使用 Shared Worker?
- r - 将使用 gtrendsR 包下载的数据收集到 excel 中
- c - Makefile 在不同的目录中生成目标文件
- python - 优化函数参数
- python - 在嵌套结构上使用Glom,如何将顶级字典字段移动到字典列表中?
- salesforce - 代码覆盖率失败 你的代码覆盖率是 72%。您需要至少 75% 的覆盖率才能完成此部署
- kubernetes - 更改现有集群上的网络插件
- javascript - 在需要传入参数的 Angular Protractor 测试中包含外部脚本
- c++ - 通过C中的指针打印char数组时出现分段错误