Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: ASP.NET MVC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
SashaPl
49 / 36 / 9
Регистрация: 25.06.2014
Сообщений: 406
Завершенные тесты: 3
1

Какой метод используется при хэшировании паролей в ASP.NET Identity?

10.10.2016, 21:44. Просмотров 1056. Ответов 3
Метки нет (Все метки)

Мне нужно найти пользователя по email и паролю, т.к. FindAsync ишет по логину и паролю.
В контроллер логин я добавил следующий код:
C#
1
2
3
4
5
6
7
PasswordHasher ph = new PasswordHasher();
var passwordHash = ph.HashPassword(model.Password);
ApplicationUser user;
using (var db = new ApplicationDbContext())
{
    user = await db.Users.Where(u => u.Email == model.Email && u.PasswordHash == passwordHash).FirstOrDefaultAsync();
}
Но проблема в том, что PasswordHasher генерирует постоянно разные хэши. Что нужно использовать?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2016, 21:44
Ответы с готовыми решениями:

Asp.net core identity
Добрый день. В своем проекте я хочу использовать двухуровневую систему -...

Миграция в ASP.NET MVC 5 с Identity
Есть проект ASP.net MVC 5 c индивидуальными учетными записями, пару моделей и...

ASP.NET Identity и идентификация пользователя в БД
Имеем: ASP.NET MVC5, авторизация на сайте с помощью "родного" ASP.NET Identity,...

Какие преимущества в использовании ASP.NET 5 Identity?
Добрый ночи, хочу узнать, в чем преимущество в использовании стандартных...

ASP.NET Core Identity (в проекте WebApi)
админам: Я не увидел разделов для кора или для веб апи, если я их пропустил,...

3
IamRain
1376 / 1230 / 387
Регистрация: 02.08.2011
Сообщений: 3,628
10.10.2016, 22:00 2
Можно попробовать использовать UserManager.PasswordHasher и хешировать проверяемый пароль им.
0
SashaPl
49 / 36 / 9
Регистрация: 25.06.2014
Сообщений: 406
Завершенные тесты: 3
10.10.2016, 22:11  [ТС] 3
IamRain,
C#
1
var passwordHash = UserManager.PasswordHasher.HashPassword(model.Password);
Вот так? Он тоже возвращает разный хэш
0
OwenGlendower
Супер-модератор
Эксперт .NET
9687 / 8431 / 3612
Регистрация: 17.03.2014
Сообщений: 16,881
Записей в блоге: 1
11.10.2016, 07:55 4
Лучший ответ Сообщение было отмечено SashaPl как решение

Решение

SashaPl, метод HashPassword здесь не подойдет т.к. при каждом вызове он генерирует случайную соль и поэтому результат всё время разный. Попробуй найти пользователя по email, а затем вызвать VerifyHashedPassword.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
ApplicationUser user;
using (var db = new ApplicationDbContext())
{
    user = await db.Users.Where(u => u.Email == model.Email).FirstOrDefaultAsync();
    if (user != null)
    {
        PasswordHasher ph = new PasswordHasher();
        if (ph.VerifyHashedPassword(user.PasswordHash, model.Password))
        {
            // Пользователь найден
        }
    }
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2016, 07:55

ASP.NET Identity связь с таблицей AspNetUsers
Доброго времени уважаемые форумчане. Осваиваю новую систему авторизации...

Авторизация и регистрация на основе ASP.NET Identity
Вот так звучит собственно само задание, не очень владею ASP.NET. Может кто чем...

Очистка cookies в ASP.NET Core Identity
Добрый день! Подскажите, пожалуйста, каким образом можно почистить куки, если...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru