Я разрабатываю веб-приложение MVC 5, используя Entity Framework Database First с существующей базой данных.
Я также использую Идентификатор ASP.Net для моей авторизации и аутентификации, однако я не использую встроенный код Entity Framework, то есть UserManager, ApplicationUser и т.д., вместо этого я использую подход, подобный этому Брок Аллен.
Теперь я работаю над входом и регистрацией учетных записей и хочу хешить пароль пользователя, прежде чем хранить его в своей пользовательской таблице.
Я понимаю, что могу создать свой собственный пользовательский класс, который реализует IPasswordHasher, однако, что я застрял. Ниже показано макет, как я думаю, что он должен работать, однако я не совсем уверен, что это даже правильно.
public class CustomPassword : IPasswordHasher
{
public string HashPassword(string password)
{
return password;
}
public PasswordVerificationResult VerifyHashedPassword(string hashedPassword, string providedPassword)
{
if (hashedPassword.Equals(providedPassword))
return PasswordVerificationResult.Success;
else return PasswordVerificationResult.Failed;
}
}
Это мои вопросы:
Q1: при регистрации новой учетной записи пользователя и передаче пароля пользователя в метод HashPassword из моего контроллера учетных записей, например, Я хотел бы, чтобы пароль пользователя хэшировался и возвращался как строка, однако, я не знаю, какой код ввести в HashPassword для этого.
CustomPassword pwd = new CustomPassword();
String UserPassword = "[email protected]";
String HashedNewPassword = pwd.HashPassword(UserPassword);
Q2. Когда пользователь регистрируется на веб-сайте, я хотел бы взять их предоставленный пароль, извлечь хешированный пароль из таблицы пользователей базы данных и затем сравнить их внутри VerifyHashedPassword, но опять же, я не знаю, что это код для сравнения хешированной строки с не хэшированной строкой.
Я был бы очень признателен за любые советы о том, как это сделать.
Спасибо.