C# 验证新输入的登录用户密码

C# 验证新输入的登录用户密码,c#,sql-server,asp.net-mvc-5,asp.net-identity,C#,Sql Server,Asp.net Mvc 5,Asp.net Identity,用户已登录,希望执行一些重要操作,我希望他们重新输入密码,以便我可以确保他们是已登录的用户 如何确认此密码是针对帐户持有人的 如果您想知道如何通过ASP.NET Identity执行此操作,或者如何设置存储过程以与AspNetUsers表相对应,或者如何通过Entity Framework执行此操作,我们将非常高兴 如何确认此密码是针对帐户持有人的 如何通过ASP.NET身份验证 要重新验证当前登录用户的密码,请提供用户VerifyView以输入密码,并使用以下方法检查该用户是否存在 var u

用户已登录,希望执行一些重要操作,我希望他们重新输入密码,以便我可以确保他们是已登录的用户

如何确认此密码是针对帐户持有人的

如果您想知道如何通过ASP.NET Identity执行此操作,或者如何设置存储过程以与
AspNetUsers
表相对应,或者如何通过Entity Framework执行此操作,我们将非常高兴

如何确认此密码是针对帐户持有人的

如何通过ASP.NET身份验证

要重新验证当前登录用户的密码,请提供用户VerifyView以输入密码,并使用以下方法检查该用户是否存在

var user=wait UserManager.FindAsync(user.Identity.Name,VerifyViewModel.Password)

如果找到用户,则当前请求与帐户持有人的请求相同



Membership.ValidateUser来自早期版本的Membership framework,而不是ASP.NET Identity。

使用Identity framework,您永远不希望直接访问数据库。始终使用提供的API。在过去几年中,数据库结构已经改变了好几次,因此引入依赖关系(例如,在数据上下文上)是在无缘无故地增加工作

有关异步用法,请参阅
jd4u
提供的答案

要同步识别密码是否与当前用户匹配,首先需要包括:

using Microsoft.AspNet.Identity;
这为identity framework引入了许多同步扩展方法

然后,您可以使用
UserManager
上的
Find
进行如下检查:

var user = UserManager.Find(User.Identity.Name, password);
if (user != null)
{
    // It is them!
}

如果用户不为null,则密码与当前用户名匹配。

您还可以使用
UserManager.CheckPassword()
扩展功能:


您可以使用UserManager执行以下操作:

if(UserManager.PasswordHasher.VerifyHashedPassword("hashedPassword", "password") 
    != PasswordVerificationResult.Failed)
{
    // password is correct 
}
有关更多信息,请参阅链接:

出于某种原因,我希望CheckPassword能够完成此操作。它不。。这非常有效,谢谢。今天我们不能使用FindAsync方法。见这个问题:
if(UserManager.PasswordHasher.VerifyHashedPassword("hashedPassword", "password") 
    != PasswordVerificationResult.Failed)
{
    // password is correct 
}