Подтвердить что ты не робот

Управление паролями паролей ASP.Net

Я разрабатываю веб-приложение MVC 5, используя Entity Framework Database First с существующей базой данных.

Я также использую Идентификатор ASP.Net для моей авторизации и аутентификации, однако я не использую встроенный код Entity Framework, то есть UserManager, ApplicationUser и т.д., вместо этого я использую подход, подобный этому Брок Аллен.

http://brockallen.com/2013/10/24/a-primer-on-owin-cookie-authentication-middleware-for-the-asp-net-developer/

Теперь я работаю над входом и регистрацией учетных записей и хочу хешить пароль пользователя, прежде чем хранить его в своей пользовательской таблице.

Я понимаю, что могу создать свой собственный пользовательский класс, который реализует 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, но опять же, я не знаю, что это код для сравнения хешированной строки с не хэшированной строкой.

Я был бы очень признателен за любые советы о том, как это сделать.

Спасибо.

4b9b3361

Ответ 1

После создания экземпляра UserManager присвойте свойству passwordhasher свой CustomPasswordHasher

UserManager<ApplicationUser> UserManager = new UserManager<ApplicationUser>(store);
UserManager.PasswordHasher = new CustomPasswordHasher(); // IPasswordHasher

Используйте UserManager, чтобы найти пользователя с именем пользователя и паролем.