Обновление столбца базы данных после X числа неудачных попыток входа - PullRequest
0 голосов
/ 22 декабря 2011

У меня есть форма входа в систему на моем веб-сайте с использованием ASP.NET MVC с C #.Все профили пользователей хранятся в таблице Customer со следующими столбцами:

  • ID
  • First_Name
  • имя пользователя
  • пароль
  • ActiveWebLog

с ActiveWebLog = 0 означает, что пользователь еще не активировал свою учетную запись, и ActiveWebLog = 1 означает, что пользователь может войти в систему.

Это мой логиндействие в моем контроллере:

    public ActionResult LogOnCustomer()
    {
        return View();
    }

    [HttpPost]
    public ActionResult LogOnCustomer(LogOnModel model, string returnUrl)
    {

        if (ModelState.IsValid)
        {

            if (MembershipService.ValidateCustomer(model.UserName, model.Password))
            {

                this.AuthCustomer = MembershipService.AuthCustomer;

                FormsService.SignIn(model.UserName, model.RememberMe);

                if (!String.IsNullOrEmpty(returnUrl))
                {
                    return Redirect(returnUrl);
                }
                else
                {
                    return RedirectToAction("RedirectPage", "Account");
                }

            }
            else
            {
                ModelState.AddModelError("", "The user name or password provided is incorrect.");
            }

        }

        // If we got this far, something failed, redisplay form
        return View(model);

    }

Мне нужно установить ActiveWebLog = -2, когда пользователь вводит неверное имя пользователя или пароль 5 раз.

Кто-нибудь знает, как это сделать?

Ответы [ 2 ]

1 голос
/ 22 декабря 2011
  • Добавьте в таблицу столбец LoginAttemptCount.

  • Проверьте учетные данные пользователя в базе данных.

  • Если нетимя пользователя, ошибка.Может быть целесообразно , а не сообщить пользователю, что имя пользователя не существует, потому что это поддерживает попытки измельчения для поиска имен пользователей.

  • Если имя пользователя совпадает, ноLoginAttemptCount => 5 (или любое число), ошибка.

  • Если имя пользователя совпадает, но пароль неверен, увеличьте LoginAttemptCount и завершите неудачей.

  • Если имя пользователя и пароль хороши (надеюсь, вы используете хешированный пароль) и LoginAttemptCount <5, сбросьте LoginAttemptCount в ноль. </p>

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

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

0 голосов
/ 22 декабря 2011
Session["tries"] = 0;
try
{
    User.Login();
}
catch (Exception)
{
    Session["tries"] = Session["tries"] + 1;
}
if (Session["tries"] > 4) 
{
    ActiveWebLog = -2;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...