разблокировать пользователя не работает в Webmatrix WebSecurity.Метод IsAccountLockedOut

#webmatrix

#webmatrix

Вопрос:

Я новичок в Web matrix и концепции веб-безопасности. Я использовал IsAccountLockedOut(String, Int32, Int32) метод, чтобы проверить, временно ли заблокирована указанная учетная запись участника из-за слишком большого количества неудачных попыток ввода пароля за указанное количество секунд. Дело в том, что после разблокировки (обновления даты разблокировки в базе данных) учетной записи участника я снова заблокирован после одного неверного пароля, но моя база данных настроена на разрешение 3 попыток. подскажите, пожалуйста, как решить проблему или дайте пример кода разблокировки.

Ответ №1:

Я не знаю, может ли это быть полезно для вас, но шаблон сайта WebMatrix Starter реализует на странице Account / Login.cshtml систему блокировки учетной записи, которая использует WebSecurity.Метод GetPasswordFailuresSinceLastSuccess():

 if (WebSecurity.UserExists(email) amp;amp; 
        WebSecurity.GetPasswordFailuresSinceLastSuccess(email) > 4 amp;amp;
        WebSecurity.GetLastPasswordFailureDate(email).AddSeconds(60) > DateTime.UtcNow) 
{
    Response.Redirect("~/Account/AccountLockedOut");
    return;
}
  

Отредактировано

Этот фрагмент учитывает поля LastPasswordFailureDate и PasswordFailuresSinceLastSuccess таблицы webpages_Membership и блокирует учетную запись, если количество сбоев превышает заданное значение (4 в примере) в течение заданного количества секунд (60 в примере).

Нет необходимости управлять «Временем разблокировки» в другой таблице.

Комментарии:

1. Итак, как разблокировать учетную запись? В нашем проекте мы обновляем поле «UnlockDateTime» в базе данных для разблокировки учетной записи пользователя. Это правильный способ? или есть какой-либо другой лучший подход?