Обработка паролей MVC4 Simple Membership

Я использую SimpleMembershipProvider в своем приложении MVC4. Похоже, что такие вещи, как обеспечение сложности пароля, максимальное количество попыток входа в систему и т. Д., Не встроены в этого поставщика, как это было в поставщиках, доступных в более ранней версии платформы. Есть ли какой-нибудь способ, позволяющий справиться с этими вещами с помощью SimpleMembership, или я должен сделать это самостоятельно?

Кроме того, какой алгоритм хеширования использует поставщик SimpleMemberhip, и я должен беспокоиться, что он, кажется, не использует соль (то есть столбец соли пуст в моей таблице webpage_membership)

2 ответа

Решение

Я еще не нашел применение сложности пароля, я новичок в MVC сам. Но существует переопределение для метода Login SimpleMembership, которое указывает максимальное количество неудачных попыток и период блокировки (в секундах). Вот пример действия моего контроллера входа в систему POST, который заблокирует учетную запись после 3 попыток:

public ActionResult Login(LoginModel model, string returnUrl)
    {
        if (ModelState.IsValid)
        {
            if (WebSecurity.IsAccountLockedOut(model.UserName, 3, 300))
            {
                ModelState.AddModelError("", "Your account has been locked due to excessive log in failures. Please try again in 5 minutes.");
                return View(model);
            }
            else if (WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
            {
                return RedirectToLocal(returnUrl);
            }
        }

        // If we got this far, something failed, redisplay form
        ModelState.AddModelError("", "The user name or password provided is incorrect.");
        return View(model);
    }

Я думаю, что вы можете использовать SimpleMembershipProvider(MembershipProvider) Перегрузка конструктора для предоставления экземпляру MembershipProvider с установленными свойствами свойств требований к паролю, и затем SimpleMembershipProvider будет использовать эти значения.

Что касается хеширования, он использует PBKDF2, что означает, что вам не стоит об этом беспокоиться.

Другие вопросы по тегам