Поделиться через


Снятие блокировки и утверждение учетных записей пользователей (C#)

Скотт Митчелл

Примечание

С момента написания этой статьи поставщики членства ASP.NET были заменены ASP.NET Identity. Мы настоятельно рекомендуем обновить приложения для использования платформы ASP.NET Identity , а не поставщиков членства, которые были представлены на момент написания этой статьи. ASP.NET Identity имеет ряд преимуществ по сравнению с системой членства ASP.NET, включая :

  • более высокая производительность;
  • Улучшенная расширяемость и тестируемость
  • Поддержка OAuth, OpenID Connect и двухфакторной проверки подлинности
  • Поддержка удостоверений на основе утверждений
  • Улучшенное взаимодействие с ASP.Net Core

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

Введение

Наряду с именем пользователя, паролем и адресом электронной почты каждая учетная запись пользователя имеет два поля состояния, которые определяют, может ли пользователь войти на сайт: заблокировано и утверждено. Пользователь автоматически блокируется, если он предоставляет недопустимые учетные данные указанное количество раз в течение указанного количества минут (параметры по умолчанию блокируют пользователя после 5 недопустимых попыток входа в систему в течение 10 минут). Состояние "Утверждено" удобно использовать в сценариях, когда необходимо выполнить какое-либо действие, прежде чем новый пользователь сможет войти на сайт. Например, пользователю может потребоваться сначала проверить свой адрес электронной почты или утвердить его администратором, прежде чем он сможет войти в систему.

Так как заблокированный или неутвержденный пользователь не может войти в систему, вполне естественно задаться вопросом, как можно сбросить эти состояния. ASP.NET не включает встроенные функции или веб-элементы управления для управления заблокированными и утвержденными состояниями пользователей, отчасти потому, что эти решения должны обрабатываться на основе каждого сайта. Некоторые сайты могут автоматически утверждать все новые учетные записи пользователей (поведение по умолчанию). У других пользователей есть администратор, утверждающий новые учетные записи или не утверждающий пользователей, пока не перейдет по ссылке, отправленной на адрес электронной почты, указанный при регистрации. Аналогичным образом, некоторые сайты могут блокировать пользователей до тех пор, пока администратор не сбросит их состояние, в то время как другие сайты отправляют заблокированным пользователям сообщение электронной почты с URL-адресом, который он может посетить, чтобы разблокировать свою учетную запись.

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

Шаг 1. Управление заблокированными и утвержденными состояниями пользователей

В руководстве По созданию интерфейса для выбора одной учетной записи пользователя из раздела Многие мы создали страницу со списком каждой учетной записи пользователя в отфильтрованном gridView. В сетке перечислены имя и адрес электронной почты каждого пользователя, его утвержденные и заблокированные состояния, сведения о том, находятся ли они в сети, а также комментарии о пользователе. Чтобы управлять утвержденными и заблокированными состояниями пользователей, можно сделать эту сетку редактируемой. Чтобы изменить утвержденное состояние пользователя, администратор сначала найдите учетную запись пользователя, а затем измените соответствующую строку GridView, установив или сняв флажок Утверждено. Кроме того, можно управлять утвержденными и заблокированными состояниями с помощью отдельной страницы ASP.NET.

В этом руководстве мы будем использовать две страницы ASP.NET: ManageUsers.aspx и UserInformation.aspx. Идея заключается в том, что ManageUsers.aspx список учетных записей пользователей в системе позволяет UserInformation.aspx администратору управлять утвержденными и заблокированными состояниями для конкретного пользователя. В первую очередь мы добавим GridView в ManageUsers.aspx , чтобы включить HyperLinkField, который отображается в виде столбца ссылок. Мы хотим, чтобы каждая ссылка указывала на UserInformation.aspx?user=UserName, где UserName — это имя пользователя для изменения.

Примечание

Если вы загрузили код для учебника По восстановлению и изменению паролей , возможно, вы заметили, что ManageUsers.aspx страница уже содержит набор ссылок "Управление", а UserInformation.aspx страница предоставляет интерфейс для изменения пароля выбранного пользователя. Я решил не реплицировать эту функцию в коде, связанном с этим руководством, так как она работала, обходя API членства и работая непосредственно с базой данных SQL Server для изменения пароля пользователя. Этот учебник начинается со страницы UserInformation.aspx с нуля.

Откройте страницу ManageUsers.aspx и добавьте HyperLinkField в UserAccounts GridView. Задайте для свойства HyperLinkField Text значение "Manage" (Управление), а его DataNavigateUrlFields свойствам UserName и DataNavigateUrlFormatString — значение и "UserInformation.aspx?user={0}" соответственно. Эти параметры настраивают HyperLinkField таким образом, чтобы все гиперссылки отображали текст "Управление", но каждая ссылка передает соответствующее значение UserName в строку запроса.

После добавления HyperLinkField в GridView просмотрите страницу ManageUsers.aspx в браузере. Как показано на рисунке 1, каждая строка GridView теперь содержит ссылку "Управление". Ссылка "Управление" для Брюса указывает на UserInformation.aspx?user=Bruce, а ссылка "Управление" для Дэйва указывает на UserInformation.aspx?user=Dave.

HyperLinkField добавляет

Рис. 1. HyperLinkField добавляет ссылку "Управление" для каждой учетной записи пользователя (щелкните для просмотра полноразмерного изображения)

Мы создадим пользовательский интерфейс и код для UserInformation.aspx страницы через некоторое время, но сначала поговорим о том, как программно изменить заблокированные и утвержденные состояния пользователя. КлассMembershipUser имеет IsLockedOut свойства и IsApproved. Свойство IsLockedOut доступно только для чтения. Механизм программной блокировки пользователя отсутствует; чтобы разблокировать пользователя, используйте MembershipUser метод класса UnlockUser. Свойство IsApproved доступно для чтения и записи. Чтобы сохранить изменения этого свойства, необходимо вызвать Membership метод класса UpdateUser, передав измененный MembershipUser объект .

IsApproved Поскольку свойство доступно для чтения и записи, элемент управления CheckBox, вероятно, является лучшим элементом пользовательского интерфейса для настройки этого свойства. Однако checkBox не будет работать для IsLockedOut свойства , так как администратор не может заблокировать пользователя, он может только разблокировать пользователя. Подходящим пользовательским интерфейсом IsLockedOut для свойства является кнопка, которая при щелчке разблокирует учетную запись пользователя. Эта кнопка должна быть включена, только если пользователь заблокирован.

UserInformation.aspxСоздание страницы

Теперь мы готовы реализовать пользовательский интерфейс в UserInformation.aspx. Откройте эту страницу и добавьте следующие веб-элементы управления:

  • Элемент управления HyperLink, который при щелчке возвращает администратора на страницу ManageUsers.aspx .
  • Веб-элемент управления Метка для отображения имени выбранного пользователя. Задайте для параметра Label ID значение UserNameLabel и очистите его Text свойство.
  • Элемент управления CheckBox с именем IsApproved. Для его свойства AutoPostBack задайте значение true.
  • Элемент управления Метка для отображения даты последнего заблокированного пользователя. Назовите этот объект Label LastLockedOutDateLabel и очистите его Text свойство.
  • Кнопка для разблокировки пользователя. Назовите эту кнопку UnlockUserButton и задайте для ее Text свойства значение "Разблокировать пользователя".
  • Элемент управления Метка для отображения сообщений о состоянии, таких как "Утвержденное состояние пользователя обновлено". Присвойте этому элементу управления StatusMessageимя , очистите его Text свойство и задайте для него CssClass значение Important. Important( Класс CSS определяется в Styles.css файле таблицы стилей. Соответствующий текст отображается крупным красным шрифтом.)

После добавления этих элементов управления представление конструктора в Visual Studio должно выглядеть так, как на снимке экрана на рисунке 2.

Создание пользовательского интерфейса для UserInformation.aspx

Рис. 2. Создание пользовательского интерфейса для UserInformation.aspx (щелкните, чтобы просмотреть полноразмерное изображение)

После завершения пользовательского интерфейса наша следующая задача — установить IsApproved CheckBox и другие элементы управления на основе сведений о выбранном пользователе. Создайте обработчик событий для события страницы Load и добавьте следующий код:

protected void Page_Load(object sender, EventArgs e)
{
     if (!Page.IsPostBack)
     {

          // If querystring value is missing, send the user to ManageUsers.aspx
          string userName = Request.QueryString["user"];
          if (string.IsNullOrEmpty(userName))
               Response.Redirect("ManageUsers.aspx");

          // Get information about this user
          MembershipUser usr = Membership.GetUser(userName);
          if (usr == null)
               Response.Redirect("ManageUsers.aspx");

          UserNameLabel.Text = usr.UserName;
          IsApproved.Checked = usr.IsApproved;
          if (usr.LastLockoutDate.Year < 2000)

               LastLockoutDateLabel.Text = string.Empty;
          else
               LastLockoutDateLabel.Text = usr.LastLockoutDate.ToShortDateString();

          UnlockUserButton.Enabled = usr.IsLockedOut;
     }
}

Приведенный выше код начинается с того, что это первый визит на страницу, а не последующая обратная связь. Затем он считывает имя пользователя, переданное через user поле querystring, и получает сведения об этой учетной записи пользователя с помощью Membership.GetUser(username) метода . Если имя пользователя не указано в строках запроса или не удалось найти указанного пользователя, администратор отправляется обратно на страницу ManageUsers.aspx .

Затем MembershipUser значение объекта UserName отображается в , UserNameLabel а IsApproved флажок CheckBox проверяется на IsApproved основе значения свойства .

Свойство MembershipUser объекта LastLockoutDate возвращает значение, DateTime указывающее, когда пользователь был в последний раз заблокирован. Если пользователь никогда не был заблокирован, возвращаемое значение зависит от поставщика членства. При создании SqlMembershipProvider учетной записи параметр задает aspnet_Membership для поля таблицы LastLockoutDate значение 1754-01-01 12:00:00 AM. Приведенный выше код отображает пустую строку в , LastLockoutDateLabel если LastLockoutDate свойство имеет место до 2000 года; в противном случае часть LastLockoutDate свойства date отображается в Label. Свойству UnlockUserButton' s Enabled присваивается состояние заблокированного пользователя. Это означает, что эта кнопка будет включена только в том случае, если пользователь заблокирован.

Проверьте страницу UserInformation.aspx в браузере. Вам, конечно, нужно начать ManageUsers.aspx с и выбрать учетную запись пользователя для управления. По прибытии в UserInformation.aspxобратите внимание, что IsApproved checkBox проверяется только в том случае, если пользователь утвержден. Если пользователь когда-либо был заблокирован, отображается дата последнего заблокированного. Кнопка Разблокировать пользователя включена только в том случае, если пользователь в данный момент заблокирован. При проверке или снятии IsApproved флажка CheckBox или нажатии кнопки "Разблокировать пользователя" происходит обратная связь, но в учетную запись пользователя не вносятся изменения, так как мы еще не создали обработчики событий для этих событий.

Вернитесь в Visual Studio и создайте обработчики событий для IsApproved событий CheckBox CheckedChanged и UnlockUser Button Click . В обработчике CheckedChanged событий задайте для свойства Checked пользователя IsApproved свойство CheckBox, а затем сохраните изменения с помощью вызова Membership.UpdateUserметода . В обработчике Click событий просто вызовите MembershipUser метод объекта UnlockUser . В обоих обработчиках событий отображает подходящее сообщение в метке StatusMessage .

protected void IsApproved_CheckedChanged(object sender, EventArgs e)
{
     // Toggle the user's approved status
     string userName = Request.QueryString["user"];
     MembershipUser usr = Membership.GetUser(userName);
     usr.IsApproved = IsApproved.Checked;
     Membership.UpdateUser(usr);
     StatusMessage.Text = "The user's approved status has been updated.";
}

protected void UnlockUserButton_Click(object sender, EventArgs e)
{
     // Unlock the user account
     string userName = Request.QueryString["user"];
     MembershipUser usr = Membership.GetUser(userName);

     usr.UnlockUser();
     UnlockUserButton.Enabled = false;
     StatusMessage.Text = "The user account has been unlocked.";
}

UserInformation.aspxТестирование страницы

После того как эти обработчики событий уже есть, повторно откройте страницу и не одобряйте пользователя. Как показано на рисунке 3, на странице должно появиться краткое сообщение о том, что свойство пользователя IsApproved было успешно изменено.

Крис был неутвержден

Рис. 3. Крис не утвержден (щелкните, чтобы просмотреть полноразмерное изображение)

Затем выйдите из системы и попробуйте войти от имени пользователя, учетная запись которого была только что неутверждена. Так как пользователь не утвержден, он не может войти в систему. По умолчанию элемент управления Вход отображает одно и то же сообщение, если пользователь не может войти, независимо от причины. Но в учебнике Проверка учетных данных пользователя в хранилище пользователей членства мы рассмотрели улучшение элемента управления "Вход" для отображения более подходящего сообщения. Как показано на рисунке 4, Крису показано сообщение о том, что он не может войти, так как его учетная запись еще не утверждена.

Крис не может войти, потому что его учетная запись неутверждена

Рис. 4. Крис не может войти, так как его учетная запись не утверждена (щелкните для просмотра полноразмерного изображения)

Чтобы проверить заблокированную функциональность, попробуйте войти в систему от имени утвержденного пользователя, но используйте неправильный пароль. Повторяйте эту процедуру необходимое количество раз, пока учетная запись пользователя не будет заблокирована. Элемент управления "Вход" также был обновлен для отображения пользовательского сообщения при попытке входа из заблокированной учетной записи. Вы знаете, что учетная запись заблокирована, как только на странице входа появится следующее сообщение: "Ваша учетная запись заблокирована из-за слишком большого количества недопустимых попыток входа. Обратитесь к администратору, чтобы разблокировать вашу учетную запись".

Вернитесь на страницу ManageUsers.aspx и щелкните ссылку Управление для заблокированного пользователя. Как показано на рисунке 5, в кнопке LastLockedOutDateLabel Разблокировать пользователя должно быть включено значение . Нажмите кнопку Разблокировать пользователя, чтобы разблокировать учетную запись пользователя. После того как вы разблокируете пользователя, он сможет снова войти в систему.

Дэйв был заблокирован из системы

Рис. 5. Дэйв был заблокирован из системы (щелкните для просмотра полноразмерного изображения)

Шаг 2. Указание состояния "Утверждено" для новых пользователей

Состояние утверждено полезно в сценариях, когда требуется выполнить определенное действие, прежде чем новый пользователь сможет войти в систему и получить доступ к пользовательским функциям сайта. Например, у вас может быть частный веб-сайт, на котором все страницы, кроме страниц входа и регистрации, доступны только для пользователей, прошедших проверку подлинности. Но что произойдет, если незнакомец достигнет вашего веб-сайта, найдет страницу регистрации и создаст учетную запись? Чтобы предотвратить это, можно переместить страницу регистрации в папку и потребовать, чтобы Administration администратор вручную создавал каждую учетную запись. Кроме того, вы можете разрешить регистрацию любому пользователю, но запретить доступ к сайту, пока администратор не утвердит учетную запись пользователя.

По умолчанию элемент управления CreateUserWizard утверждает новые учетные записи. Это поведение можно настроить с помощью свойства элемента управления DisableCreatedUser. Присвойте этому свойству значение , true чтобы не утверждать новые учетные записи пользователей.

Примечание

По умолчанию элемент управления CreateUserWizard автоматически входит в новую учетную запись пользователя. Это поведение определяется свойствомLoginCreatedUser элемента управления. Так как неутвержденные пользователи не могут войти на сайт, при DisableCreatedUser этом true новая учетная запись пользователя не входит на сайт, независимо от значения LoginCreatedUser свойства .

При программном создании новых учетных записей пользователей с помощью Membership.CreateUser метода для создания неутвержденной учетной записи пользователя используйте одну из перегрузок, которые принимают значение свойства нового пользователя IsApproved в качестве входного параметра.

Шаг 3. Утверждение пользователей путем проверки их Email адреса

Многие веб-сайты, поддерживающие учетные записи пользователей, не утверждают новых пользователей, пока не подтвердят адрес электронной почты, указанный при регистрации. Этот процесс проверки обычно используется для того, чтобы сорвать ботов, спамеров и других не-er-do-wells, так как он требует уникального проверенного адреса электронной почты и добавляет дополнительный шаг в процесс регистрации. При использовании этой модели при регистрации нового пользователя отправляется сообщение электронной почты, содержащее ссылку на страницу проверки. Перейдя по ссылке, пользователь доказал, что он получил сообщение электронной почты и, следовательно, что указанный адрес электронной почты является допустимым. Страница проверки отвечает за утверждение пользователя. Это может произойти автоматически, тем самым утвердив любого пользователя, который достигает этой страницы, или только после того, как пользователь предоставит некоторые дополнительные сведения, например CAPTCHA.

Чтобы выполнить этот рабочий процесс, необходимо сначала обновить страницу создания учетной записи, чтобы новые пользователи не были утверждены. Откройте страницу EnhancedCreateUserWizard.aspx в папке Membership и присвойте свойству элемента управления DisableCreatedUser CreateUserWizard значение true.

Далее необходимо настроить элемент управления CreateUserWizard для отправки сообщения электронной почты новому пользователю с инструкциями по проверке его учетной записи. В частности, мы добавим в сообщение электронной почты ссылку на страницу Verification.aspx (которую еще предстоит создать), передавая новый пользователь UserId через строку запроса. Страница Verification.aspx будет искать указанного пользователя и помечать его утвержденным.

Отправка Email проверки новым пользователям

Чтобы отправить сообщение электронной почты из элемента управления CreateUserWizard, настройте его MailDefinition свойство соответствующим образом. Как обсуждалось в предыдущем руководстве, элементы управления ChangePassword и PasswordRecovery содержат MailDefinition свойство , которое работает так же, как и элементы управления CreateUserWizard.

Примечание

Чтобы использовать свойство , MailDefinition необходимо указать параметры доставки почты в Web.config. Дополнительные сведения см. в статье Отправка Email в ASP.NET.

Начните с создания нового шаблона электронной почты с именем CreateUserWizard.txt в папке EmailTemplates . Используйте следующий текст для шаблона:

Hello <%UserName%>! Welcome aboard.

Your new account is almost ready, but before you can login you must first visit:
<%VerificationUrl%>

Once you have visited the verification URL you will be redirected to the login page.

If you have any problems or questions, please reply to this email.

Thanks!

Присвойте свойству MailDefinition' s BodyFileName значение "~/EmailTemplates/CreateUserWizard.txt" и Subject свойству "Добро пожаловать на мой веб-сайт! Активируйте свою учетную запись".

Обратите внимание, что шаблон CreateUserWizard.txt сообщения электронной почты содержит <%VerificationUrl%> заполнитель. Здесь будет размещен URL-адрес Verification.aspx страницы. CreateUserWizard автоматически заменяет <%UserName%> заполнители и <%Password%> именем пользователя и паролем новой учетной записи, но встроенный <%VerificationUrl%> заполнитель отсутствует. Необходимо вручную заменить его соответствующим URL-адресом проверки.

Для этого создайте обработчик событий для события CreateUserWizard SendingMail и добавьте следующий код:

protected void NewUserWizard_SendingMail(object sender, MailMessageEventArgs e)
{
     // Get the UserId of the just-added user
     MembershipUser newUser = Membership.GetUser(NewUserWizard.UserName);

     Guid newUserId = (Guid)newUser.ProviderUserKey;

     // Determine the full verification URL (i.e., http://yoursite.com/Verification.aspx?ID=...)
     string urlBase = Request.Url.GetLeftPart(UriPartial.Authority) + 
          Request.ApplicationPath;

     string verifyUrl = "/Verification.aspx?ID=" + newUserId.ToString();
     string fullUrl = urlBase + verifyUrl;

     // Replace <%VerificationUrl%> with the appropriate URL and querystring
     e.Message.Body = e.Message.Body.Replace("<%VerificationUrl%>", fullUrl);
}

Событие SendingMail возникает после CreatedUser события, то есть к тому времени, когда указанный выше обработчик событий выполнит новую учетную запись пользователя уже была создана. Мы можем получить доступ к значению нового пользователя UserId , вызвав Membership.GetUser метод , передав введенный UserName в элемент управления CreateUserWizard. Затем формируется URL-адрес проверки. Инструкция Request.Url.GetLeftPart(UriPartial.Authority) возвращает http://yourserver.com часть URL-адреса; Request.ApplicationPath возвращает путь, в котором находится корневой каталог приложения. ЗАТЕМ URL-адрес проверки определяется как Verification.aspx?ID=userId. Затем эти две строки объединяются для формирования полного URL-адреса. Наконец, текст сообщения электронной почты <%VerificationUrl%> (e.Message.Body) заменяется полным URL-адресом.

Результатом является то, что новые пользователи неутверждены, что означает, что они не могут войти на сайт. Кроме того, им автоматически отправляется сообщение электронной почты со ссылкой на URL-адрес проверки (см. рис. 6).

Новый пользователь получает Email со ссылкой на URL-адрес проверки

Рис. 6. Новый пользователь получает Email со ссылкой на URL-адрес проверки (щелкните для просмотра полноразмерного изображения)

Примечание

На шаге CreateUserWizard по умолчанию элемента управления CreateUserWizard отображается сообщение о создании учетной записи пользователя и отображается кнопка Продолжить. Если щелкнуть этот параметр, пользователь перейдет по URL-адресу, указанному свойством ContinueDestinationPageUrl элемента управления. CreateUserWizard в настроен для отправки новых пользователей в EnhancedCreateUserWizard.aspx~/Membership/AdditionalUserInfo.aspx, который запрашивает у пользователя родной город, URL-адрес домашней страницы и подпись. Так как эти сведения могут добавляться только пользователями, вошедшего в систему, имеет смысл обновить это свойство, чтобы отправить пользователей обратно на домашнюю страницу сайта (~/Default.aspx). Кроме того, EnhancedCreateUserWizard.aspx страница или шаг CreateUserWizard должны быть дополнены, чтобы сообщить пользователю, что ей отправлено проверочное сообщение электронной почты и его учетная запись не будет активирована, пока он не будет следовать инструкциям в этом сообщении. Я оставляю эти изменения как упражнение для читателя.

Создание страницы проверки

Последняя задача — создать страницу Verification.aspx . Добавьте эту страницу в корневую папку, связав ее со страницей Site.master master. Как и с большинством предыдущих страниц контента, добавленных на сайт, удалите элемент управления Контент, который ссылается на LoginContent ContentPlaceHolder, чтобы страница контента использовала содержимое страницы master по умолчанию.

Добавьте веб-элемент управления Label на страницу Verification.aspx , задайте для него ID значение StatusMessage и очистите его свойство text. Затем создайте Page_Load обработчик событий и добавьте следующий код:

protected void Page_Load(object sender, EventArgs e)
{
     if (string.IsNullOrEmpty(Request.QueryString["ID"]))
          StatusMessage.Text = "The UserId was not included in the querystring...";
     else
     {
          Guid userId;
          try
          {
               userId = new Guid(Request.QueryString["ID"]);
          }

          catch
          {
               StatusMessage.Text = "The UserId passed into the querystring is not in the
                    proper format...";
               return;
          }

          MembershipUser usr = Membership.GetUser(userId);
          if (usr == null)
               StatusMessage.Text = "User account could not be found...";
          else
          {
               // Approve the user
               usr.IsApproved = true;

               Membership.UpdateUser(usr);
               StatusMessage.Text = "Your account has been approved. 
                    Please <a href=\"Login.aspx\">login</a> to the site.";
          }
     }
}

Основная часть приведенного выше кода проверяет, существует ли UserId объект , предоставленный через строку запроса, является ли он допустимым Guid значением и ссылается на существующую учетную запись пользователя. Если все эти проверки пройдены, учетная запись пользователя утверждается; в противном случае отображается подходящее сообщение о состоянии.

На рисунке 7 показана Verification.aspx страница при посещении через браузер.

Учетная запись нового пользователя утверждена

Рис. 7. Учетная запись нового пользователя утверждена (щелкните, чтобы просмотреть полноразмерное изображение)

Сводка

Все учетные записи участников имеют два состояния, которые определяют, может ли пользователь войти на сайт: IsLockedOut и IsApproved. Оба этих свойства должны иметь true значение для входа пользователя.

Состояние заблокированного пользователя используется в качестве меры безопасности, чтобы снизить вероятность взлома сайта злоумышленником с помощью методов подбора. В частности, пользователь блокируется при наличии определенного количества недопустимых попыток входа в систему в течение определенного периода времени. Эти границы можно настроить с помощью параметров поставщика членства в Web.config.

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

Счастливое программирование!

Об авторе

Скотт Митчелл (Scott Mitchell), автор нескольких книг ASP/ASP.NET и основатель 4GuysFromRolla.com, работает с веб-технологиями Майкрософт с 1998 года. Скотт работает независимым консультантом, тренером и писателем. Его последняя книга Sams Teach Yourself ASP.NET 2.0 в 24 часа. Скотт можно связаться по адресу mitchell@4guysfromrolla.com или через его блог по адресу http://ScottOnWriting.NET.

Отдельная благодарность...

Эта серия учебников была проверена многими полезными рецензентами. Хотите ознакомиться с моими предстоящими статьями MSDN? Если да, бросить мне линию на mitchell@4GuysFromRolla.com