Отключить хеширование пароля

97
24 марта 2021, 03:00

В проекте используется стандартная аутентификация Individual User Accounts. Добавил в модель новое поле password. При регистрации сохраняется в это поле без хеширования.

public async Task<ActionResult> Register(RegisterViewModel model)
    {
        if (ModelState.IsValid)
        {
            var user = new ApplicationUser { UserName = model.UserName, Email = model.Email, fio = model.fio, login= model.UserName, password=model.Password };
            var result = await UserManager.CreateAsync(user);
            if (result.Succeeded)
            {
                await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false);                  
                  return RedirectToAction("Index", "Home");
            }
            AddErrors(result);
        }
        return View(model);
    }

Как изменить /Account/Login чтобы сравнивался пароль из нового поле без хеширования, а не из поля PasswordHash?

var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false);

Как изменить PasswordSignInAsync?

Answer 1

чтобы сравнивался пароль из нового поле без хеширования, а не из поля PasswordHash

Скорее всего никак. Вам придётся использовать собственный механизм авторизации, если Вы хотите именно такую проверку пароля..

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

Answer 2

Получилось сделать с помощью небольшого костыля:

В Register внес изменение:

    var user = new ApplicationUser { UserName = model.UserName, Email = model.Email, 
    fio = model.fio, login= model.UserName, password=model.Password };
    var result = await UserManager.CreateAsync(user, "!QAZzaq1");

В Login:

        ApplicationUser user = await UserManager.FindByNameAsync(model.UserName);
        if (user is null)
        {
            ModelState.AddModelError("", "Invalid login attempt.");
            return View(model);
        }
        else if (user.password==model.password)
        {
        var result = await SignInManager.PasswordSignInAsync(model.UserName, "!QAZzaq1", model.RememberMe, shouldLockout: false);          
                    switch (result)
                    {
                        case SignInStatus.Success:
                            return RedirectToLocal(returnUrl);
                        case SignInStatus.LockedOut:
                            return View("Lockout");
                        case SignInStatus.RequiresVerification:
                            return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
                        case SignInStatus.Failure:
                        default:
                            ModelState.AddModelError("", "Invalid login attempt.");
                            return View(model);
                    }
        }
READ ALSO
Перемещение точек в 3D пространстве

Перемещение точек в 3D пространстве

Хочу попрактиковаться за это лето и попробовать написать что-нибудь в 3D с помощью библиотеки SystemWindows

104
Вернуть значение из таблицы

Вернуть значение из таблицы

Есть таблица(Table) с полями (Name, age) 1Нужно проверить существование записи в таблице по имени

118
Ползунок диапазона цены jQuery

Ползунок диапазона цены jQuery

Здравствуйте, есть ползунок диапазона ценыВыглядит вот так

121
Wordpress Адаптивный thumbnail

Wordpress Адаптивный thumbnail

Данный код создает thumbnail 150x100 изображения к примеру с размером 500х1000 он берет центр и режет на 150 высотуКак создать thumbnail с адаптивным высотой...

94