Проверка введенного пароля зарегистрированного пользователя
Пользователь вошел в систему и хочет сделать что-то важное, и я хочу, чтобы они повторно вводили свой пароль, чтобы я мог убедиться, что он является пользователем, который вошел в систему.
Как я могу подтвердить, что этот пароль для владельца учетной записи?
Был бы рад узнать, как это сделать с помощью ASP.NET Identity или как настроить сохраненный proc для перехода к таблице AspNetUsers
или как это сделать через Entity Framework.
Ответы
Ответ 1
Как я могу подтвердить, что этот пароль для владельца учетной записи?
как это сделать через идентификатор ASP.NET
Чтобы повторно проверить пароль текущего пользователя, предоставьте пользователю VerifyView ввести пароль и используйте следующий метод, чтобы проверить, существует ли пользователь.
var user = await UserManager.FindAsync(User.Identity.Name,VerifyViewModel.Password)
Если пользователь найден, текущий запрос совпадает с текущим запросом владельца учетной записи.
Членство. ValidateUser - из более ранней версии Framework Membership, а не из идентификатора ASP.NET.
Ответ 2
В среде Identity вы никогда не захотите напрямую попасть в базу данных. Всегда используйте предоставленный API. За последние несколько лет структура базы данных несколько раз менялась, поэтому введение зависимостей (например, в контексте данных) добавляет работу без причины.
Для использования async см. ответ, уже предоставленный jd4u
.
Для синхронного определения того, что пароль соответствует текущему пользователю, вам необходимо сначала включить:
using Microsoft.AspNet.Identity;
поскольку это приводит к ряду синхронных методов расширения для системы идентификации.
Затем вы можете проверить с помощью Find
на UserManager
следующим образом:
var user = UserManager.Find(User.Identity.Name, password);
if (user != null)
{
// It is them!
}
Если пользователь не является нулевым, то у вас есть совпадение с паролем и текущим именем пользователя.
Ответ 3
Вы также можете использовать функцию расширения UserManager.CheckPassword()
:
UserManagerExtensions.CheckPassword Method
string id = User.Identity.GetUserId();
var user = UserManager.FindById(id);
if(!UserManager.CheckPassword(user, model.Password))
{
ModelState.AddModelError("Password", "Incorrect password.");
}
Ответ 4
Для этого можно использовать UserManager:
if(UserManager.PasswordHasher.VerifyHashedPassword("hashedPassword", "password")
!= PasswordVerificationResult.Failed)
{
// password is correct
}
Для получения дополнительной информации см. ссылку:
Как проверить пароль вручную в идентификаторе Asp.Net 2?