Быстрое создание сайта ASP.NET с авторизацией, основанной на формах с использованием стандартного провайдера Membership, SQL Server 2008 и Visual Studio 2010


14.06.2012 || Раздел: || MS SQL Server || ASP.Net


В данном уроке мы при помощи SQL Server 2008 и Visual Studio 2010 создадим стандартный ASP.Net сайт, поддерживающий авторизацию, основанную на формах (authentication mode="Forms").

Это делается очень просто и быстро, если использовать встроенные инструменты .Net Framework и Visual Studio.

Итак, начнем:

1. В начале создайте базу данных (БД), создайте пользователя с правами на чтение и запись (дополнительно см. здесь - Создание базы данных в MS SQL Server 2008 R2 и пользователя с соответствующими правами для хранения контента CMS KooBoo (подходит для создания БД и в целях этого урока)

2. Теперь нам необходимо создать таблицы для хранения пользователей сайта. Для этого воспользуемся специальной утилитой, поставляемой вместе с .Net Framework. 
В директории: C:\Windows\Microsoft.NET\Framework\v4.0.30319 (или похожая версия), находим утилиту aspnet_regsql.exe. Она сгенерирует необходимую структуру БД. Запускаем ее, програма попросит ввести данные, созданные на предыдущем шаге (имя сервера, пользователя и т.п.).

Как только программа завершит свою работу, Вы можете заглянуть в свою базу данных через SQL Server 2008 и увидитеть, какие таблицы были созданы:

таблицы пользователей сайта

3. В Visual Studio 2010 создаем ASP.Net веб-сайт (ASP.NET Web Site) (Язык программирования Visual Basic или Visual C# Вы можете выбрать по Вашему усмотрению):

создание сайта в визуал студио 2010

Автоматически будут сгенерированы страницы для работы с пользователями и включен режим аутентификации по формам:

страницы для работы с пользователями
 

4. Добавляем подключение к созданной базе в файл web.config:

строка подключения к sql server в файле конфигурации 
 
5. Запускаем сайт и пробуем ввести любой логин-пароль, чтобы проверить подключение к БД:

пример стандартного сайта asp.net

 
Если в ответ появилось сообщение о неудачной попытке входа, то соединение прошло нормально.

6. Настроим провайдера (membership provider), прежде чем регистрировать новых пользователей.

Допустим нам необходимо хранить пароль в шифрованном виде (по умолчанию предлагается хэширование). Шифрование позволяет использовать механизм напоминания паролей пользователям (отсылка пользователям непосредственно пароля, а не строки для его смены).

Чтобы использовать шифрование, необходимо задать следующие параметры:

a. Тип и ключ шифрования - задается параметром machineKey. Его можно вставить после секции <membership>. Сгенерировать ключ можно на сайте - http://aspnetresources.com/tools/machineKey

Например, такой:

<machineKey 
validationKey="8966535C1A4EE9EA2419378F7E3A91CF03A23C51A264902597BE07F8FDA75C3AC167F
65C62FB87D2E7F1719C54E20070C2ED38177B8633E80ED05B73A61351CE"
decryptionKey="805527B6A6A3AD97E957BC1B4F4FF681A807D3EEAD9B555B65D0EB1C0F77097C"
validation="SHA1" />


b. Параметры пароля:(жирным выделены нужные параметры, остальные вы можете менять по желанию)

<membership>
  <providers>
  <clear/>
  <add name="AspNetSqlMembershipProvider"
  type="System.Web.Security.SqlMembershipProvider" 
 
connectionStringName="ApplicationServices"
  enablePasswordRetrieval="true" 
 
enablePasswordReset="false" 
 
requiresQuestionAndAnswer="false" passwordFormat="Encrypted"

  requiresUniqueEmail="true" maxInvalidPasswordAttempts="15" 
 
minRequiredPasswordLength="4" minRequiredNonalphanumericCharacters="0" 
 
passwordAttemptWindow="10" applicationName="/" />
  </providers>
</membership>

Также, пусть сайт будет помнить пользователя достаточно долго, если он не нажимает кнопку "Выход". Для этого в секции указания формы логина (<authentication>), укажем также срок:

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login.aspx" timeout="518400" protection="All"/>
  <!-- 43200 минут - 30 дней, 518400 - 1 год -->
</authentication>

Закройте файл web.config
 
7. Теперь создадим первого пользователя и назначим ему роль администратора. Т.к. у нас нет еще страниц на сайте для управления пользователями, сделаем это через мастер ASP.Net. Нажмите кнопку "ASP.Net Configuration" в блоке "Solution Explorer".

solution explorer visual studio
 
В браузере откроется окно администрирования "Web Site Administration Tool":
 
asp.net site membership administration tool
 
Переходим на вкладку "Security".
 

 
Щелкните "Enable roles". Затем перейдите по ссылке "Create or Manage roles". Создайте роль администратора:

 
 
Перейдите обратно на вкладку "Security" и нажмите "Create user".

Создайте пользователя-администратора (пароль по умолчанию не менее 7 символов):

Теперь Ваш сайт готов к использованию. Далее Вы можете создать дополнительно нужные роли и соответствующие страницы сайта для них.

©Элла (Автор: Ella Sea)

< Предыдущая статья

Пример создания простейшего плагина Hello World для системы KooBoo

Следующая статья >

Изучаем пункт меню Настройки (Settings) административной консоли системы Kooboo