Проверка введенного пароля зарегистрированного пользователя

Пользователь вошел в систему и хочет сделать что-то важное, и я хочу, чтобы они повторно вводили свой пароль, чтобы я мог убедиться, что он является пользователем, который вошел в систему.

Как я могу подтвердить, что этот пароль для владельца учетной записи?

Был бы рад узнать, как это сделать с помощью 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.");
}