В проекте используется стандартная аутентификация 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?
чтобы сравнивался пароль из нового поле без хеширования, а не из поля PasswordHash
Скорее всего никак. Вам придётся использовать собственный механизм авторизации, если Вы хотите именно такую проверку пароля..
Но, всё-таки лучше так не делать, потому что использование открытых паролей, это огромнейшая дыра в безопасности.
Получилось сделать с помощью небольшого костыля:
В 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);
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Хочу попрактиковаться за это лето и попробовать написать что-нибудь в 3D с помощью библиотеки SystemWindows
Есть таблица(Table) с полями (Name, age) 1Нужно проверить существование записи в таблице по имени
Данный код создает thumbnail 150x100 изображения к примеру с размером 500х1000 он берет центр и режет на 150 высотуКак создать thumbnail с адаптивным высотой...