C# 验证新输入的登录用户密码
用户已登录,希望执行一些重要操作,我希望他们重新输入密码,以便我可以确保他们是已登录的用户 如何确认此密码是针对帐户持有人的 如果您想知道如何通过ASP.NET Identity执行此操作,或者如何设置存储过程以与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
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
}