.NET MVC 5 Razor - 检查密码对登录用户 ID 是否有效

.NET MVC 5 Razor - check password is valid for logged in user Id

我需要在执行操作前检查用户密码。

例如,用户试图提取他们的信用。有 2 个输入:

  1. 要提取的金额
  2. 用户密码

由于用户已经登录,我可以获取UserId。但是,我需要根据当前登录的 UserId 验证他们的密码。

最简单的方法是强制用户重新登录(即要求他们输入用户名和密码),但这看起来很愚蠢且没有必要。

知道如何根据特定用户 ID 验证用户密码吗?

谢谢

我找到了解决方案。其实很简单。首先,是获取用户管理器。如果您不知道如何获取用户管理器,只需按照创建 MVC 项目时的默认示例即可。代码是:

HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>()

代码如下:

//var userManager = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
var user = userManager.Users.FirstOrDefault(rec => rec.Id == userId);
return userManager.PasswordHasher.VerifyHashedPassword(user.PasswordHash, model.Password) != PasswordVerificationResult.Failed;

就是这样! 我希望这篇 post 对遇到类似问题的人有所帮助。

干杯!