Rei*_*eid 17 c# sql-server asp.net-mvc-5 asp.net-identity
用户已登录并想要做一些重要的事情,我希望他们重新输入密码,这样我就可以确保他们是登录的用户.
如何确认此密码是否适用于帐户持有人?
很高兴知道如何通过ASP.NET Identity或如何设置存储过程来反对AspNetUsers表或如何通过Entity Framework来完成它.
jd4*_*d4u 18
如何确认此密码是否适用于帐户持有人?
如何通过ASP.NET身份来实现
要重新验证当前登录用户的密码,请为用户提供验证以输入密码,并使用以下方法检查用户是否存在.
var user = await UserManager.FindAsync(User.Identity.Name,VerifyViewModel.Password)
如果找到用户,则当前请求与帐户持有者相同.
Membership.ValidateUser来自早期版本的Membership框架,而不是来自ASP.NET Identity.
您还可以使用UserManager.CheckPassword()扩展功能:
UserManagerExtensions.CheckPassword方法
string id = User.Identity.GetUserId();
var user = UserManager.FindById(id);
if(!UserManager.CheckPassword(user, model.Password))
{
ModelState.AddModelError("Password", "Incorrect password.");
}
Run Code Online (Sandbox Code Playgroud)
使用Identity框架,您永远不想直接访问数据库.始终使用提供的API.数据库结构在过去几年中已经多次更改,因此引入依赖关系(例如,在数据上下文中)无缘无故地添加工作.
对于异步使用,请参阅已提供的答案jd4u.
要同步识别密码与当前用户匹配,您需要先包括:
using Microsoft.AspNet.Identity;
Run Code Online (Sandbox Code Playgroud)
因为这为身份框架带来了许多同步扩展方法.
然后,您可以检查与Find对UserManager这样的:
var user = UserManager.Find(User.Identity.Name, password);
if (user != null)
{
// It is them!
}
Run Code Online (Sandbox Code Playgroud)
如果用户不为null,则您具有密码和当前用户名的匹配项.
| 归档时间: |
|
| 查看次数: |
10948 次 |
| 最近记录: |