3

, который является лучшим способом доступа к информации в таблице webpages_Membership с использованием SimpleMembershipProvider в MVC 4? Я пытаюсь реализовать блок счета, если он/она ввода неправильного пароля три раза ..SimpleMembershipProvider: webpages_Membership table

Большое спасибо

ответ

6

Использование SimpleMembership вы бы получить доступ к этой информации с помощью следующего метода:

WebSecurity.IsAccountLockedOut(userName, allowedPasswordAttempts, intervalInSeconds) 

IsAccountLockedOut возвращает, заблокирована ли учетная запись или нет, на основе количества попыток, которые вы хотите разрешить, и времени, прошедшего с момента последней неудачной попытки входа в систему. Это используется, чтобы остановить попытки грубой силы взломать пароль другими машинами. Вы добавили бы эту проверку, где вы аутентифицируете пользователя, например, метод Login Accounters Account. Вы могли бы сделать что-то вроде этого:

[HttpPost] 
    [AllowAnonymous] 
    [ValidateAntiForgeryToken] 
    public ActionResult Login(LoginModel model, string returnUrl) 
    { 
     if (ModelState.IsValid && 
      !WebSecurity.IsAccountLockedOut(model.UserName, 3, 180) && 
      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); 
    } 

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

Поле IsConfirmed Поле используется во время регистрации, и вы хотите, чтобы пользователь подтвердил, что он предоставил вам действительный адрес электронной почты. Вы должны сгенерировать и сохранить ConfirmationToken в базе данных, которую вы должны отправить по электронной почте пользователю, и попросить их щелкнуть ссылку, которая приведет их к контроллеру/действию в вашем приложении MVC, которое проверит токен и установит IsConfirmed Поле к истине.

+0

это вполне нормально .. но в моих целях, я хочу, чтобы отключить укомплектовать пользователь и, если я правильно понял, IsAccountLockedOut проверяет только на промежуток времени .. не лучше ли установить поле IsConfirmed на false? – Davide

+0

См. Мой обновленный ответ, в котором объясняется, как использовать IsAccountLockedOut и для чего используется IsConfirmed. –

+0

Очистить, большое спасибо :) – Davide

1

Давида, чтобы полностью отключить пользователь, вы можете создать новую роль «Disabled» и изменить код входа:

public ActionResult Login(LoginModel model, string returnUrl) 
{ 
    string errorMsg = "The user name or password provided is incorrect."; 
    if (Roles.IsUserInRole(model.UserName, "Disabled")) 
    { 
     errorMsg = "Your account has been disabled. Contact webmaster for more info."; 
    } 
    else if (ModelState.IsValid && 
     !WebSecurity.IsAccountLockedOut(model.UserName, 3, 180) && 
     WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe)) 
    { 
      return RedirectToLocal(returnUrl); 
    } 

    if (!WebSecurity.IsConfirmed(model.UserName)) 
    { 
     errorMsg = "You have not completed the registration process. " 
      + "To complete this process look for the email that provides instructions."; 
    } 

    // If we got this far, something failed, redisplay form 
    ModelState.AddModelError("", errorMsg); 
    return View(model); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^