Для хэширования пароля в ASP.NET MVC можно использовать библиотеку System.Security.Cryptography, в частности классы SHA256Managed или SHA512Managed. Ниже приведен пример простой функции для хэширования пароля с использованием SHA256:
public string HashPassword(string password) { using (var sha256 = new SHA256Managed()) { byte[] bytes = Encoding.UTF8.GetBytes(password); byte[] hash = sha256.ComputeHash(bytes); return BitConverter.ToString(hash).Replace("-", "").ToLower(); } }
Вы можете добавить эту функцию в ваш контроллер AccountController и использовать ее для хэширования паролей перед сохранением и сравнения с хэшированными паролями в базе данных:
[HttpPost] public ActionResult Register(RegisterViewModel model) { if (ModelState.IsValid) { // Хэшируем пароль перед сохранением string hashedPassword = HashPassword(model.Password); User user = repository.Users().FirstOrDefault(m => m.Login == model.Login); if (user == null) { repository.Add(new User { Login = model.Login, Password = hashedPassword }); // Проверяем, что пользователь был успешно добавлен и аутентифицируем его user = repository.Users().FirstOrDefault(m => m.Login == model.Login && m.Password == hashedPassword); if (user != null) { authProvider.Authenticate(model.Login); return RedirectToAction("Index", "Document"); } } else { ModelState.AddModelError("", "Пользователь с таким логином уже существует"); } } return View(model); } [HttpPost] public ActionResult Login(LoginViewModel model) { if (ModelState.IsValid) { // Хэшируем введенный пароль для сравнения с хэшированным паролем в базе данных string hashedPassword = HashPassword(model.Password); User user = repository.Users().FirstOrDefault(m => m.Login == model.Login && m.Password == hashedPassword); if (user != null) { authProvider.Authenticate(model.Login); return RedirectToAction("Index", "Document"); } else { ModelState.AddModelError("", "Неверный логин или пароль"); } } return View(model); }
Таким образом, вы можете использовать функцию HashPassword для хэширования паролей перед их сохранением в базе данных и для сравнения с хэшированными значениями при авторизации пользователей.
Для хэширования пароля в ASP.NET MVC можно использовать библиотеку System.Security.Cryptography, в частности классы SHA256Managed или SHA512Managed. Ниже приведен пример простой функции для хэширования пароля с использованием SHA256:
public string HashPassword(string password){
using (var sha256 = new SHA256Managed())
{
byte[] bytes = Encoding.UTF8.GetBytes(password);
byte[] hash = sha256.ComputeHash(bytes);
return BitConverter.ToString(hash).Replace("-", "").ToLower();
}
}
Вы можете добавить эту функцию в ваш контроллер AccountController и использовать ее для хэширования паролей перед сохранением и сравнения с хэшированными паролями в базе данных:
[HttpPost]public ActionResult Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
// Хэшируем пароль перед сохранением
string hashedPassword = HashPassword(model.Password);
User user = repository.Users().FirstOrDefault(m => m.Login == model.Login);
if (user == null)
{
repository.Add(new User { Login = model.Login, Password = hashedPassword });
// Проверяем, что пользователь был успешно добавлен и аутентифицируем его
user = repository.Users().FirstOrDefault(m => m.Login == model.Login && m.Password == hashedPassword);
if (user != null)
{
authProvider.Authenticate(model.Login);
return RedirectToAction("Index", "Document");
}
}
else
{
ModelState.AddModelError("", "Пользователь с таким логином уже существует");
}
}
return View(model);
}
[HttpPost]
public ActionResult Login(LoginViewModel model)
{
if (ModelState.IsValid)
{
// Хэшируем введенный пароль для сравнения с хэшированным паролем в базе данных
string hashedPassword = HashPassword(model.Password);
User user = repository.Users().FirstOrDefault(m => m.Login == model.Login && m.Password == hashedPassword);
if (user != null)
{
authProvider.Authenticate(model.Login);
return RedirectToAction("Index", "Document");
}
else
{
ModelState.AddModelError("", "Неверный логин или пароль");
}
}
return View(model);
}
Таким образом, вы можете использовать функцию HashPassword для хэширования паролей перед их сохранением в базе данных и для сравнения с хэшированными значениями при авторизации пользователей.