Как заблокировать пользователя с помощью проверки подлинности форм

платформа кодирования: ASP.NET 4.0 Webforms с C#

у меня есть две роли admin и member.
В моем приложении, администратор может управлять большинством данных.
Я знаю, что в аутентификации форм пользователь может быть разблокирован, как,

            MembershipUser user = Membership.GetUser(clickeduserName);
            user.UnlockUser();
            Membership.UpdateUser(user);

мои вопросы:

  1. как заблокировать пользователя при проверке подлинности форм?
  2. почему MembershipUser.IsLockedOut Property установить как ReadOnly?
  3. это не правильный способ локаут люди как администратор?

3 ответов


здесь обсуждается несколько вариантов:http://forums.asp.net/t/1435151.aspx

они варьируются от использования IsApproved (settable) вместо IsLockedOut до mucking с базовой базой данных SQL для установки флага блокировки.


вы можете заблокировать пользователя (set .IsLockedOut to true), выполнив следующие действия:

    MembershipUser user = Membership.GetUser("UserToLock");        
    for (int i = 0; i < Membership.MaxInvalidPasswordAttempts; i++)
    {
        Membership.ValidateUser(user.UserName, "Not the right password");
    }

выдержка из MSDN:

обычно, пользователя LockedOut автоматически, когда MaxInvalidPasswordAttempts достигается через PasswordAttemptWindow.

пользователи также могут быть заблокированы, если вы используете GetPassword или ResetPassword перегрузка, которая принимает ответ пароля и количество плохих ответов, введенных пользователем, достигает значения членства.MaxInvalidPasswordAttempts внутри Membership.PasswordAttemptWindow.

временное решение можно использовать свойство IsApproved такой:

MembershipUser user = Membership.GetUser();
user.IsApproved = false;
Membership.UpdateUser(user);