Asp.net для начинающих: Авторизация на сайте (Membership)

Programming
Предыдущий Следующий

Для авторизация на сайте я использую стандартные решения от Microsoft. При создании проекта в него можно включить AspNetSqlMembershipProvider. Мне этот провайдер не нравится, так как использует много лишних таблиц. Намного проще реализована авторизация в ASP.NET Universal Providers (DefaultMembershipProvider). Будем его настраивать.

Создаем asp.net mvc 3 проект. Открываем web.config.

Прописываем строку подключения к БД. Вместо текста

<add name="ApplicationServices"
         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
         providerName="System.Data.SqlClient" />

Пишем текст:

<add name="ApplicationServices"
     connectionString="Data Source=ComputerName;Initial Catalog=DataBaseName;Integrated Security=True;user id=UserName;password=UserPass;"
     providerName="System.Data.SqlClient" />
 

Теперь ищем параметры membership. Вот такой код:

<membership>
  <providers>
    <clear/>
    <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
         enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
         maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
         applicationName="/" />
  </providers>
</membership>

<profile>
  <providers>
    <clear/>
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
  </providers>
</profile>

<roleManager enabled="false">
  <providers>
    <clear/>
    <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
    <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
  </providers>
</roleManager>

В этом коде есть разделы для настройки Ролей, профайла и самого membership.

Заменим этот когда на другой:

<profile defaultProvider="DefaultProfileProvider" >
  <providers>
    <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
  </providers>
</profile>
<membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider" connectionStringName="ApplicationServices"
      enablePasswordRetrieval="true" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
      passwordFormat="Encrypted" maxInvalidPasswordAttempts="500" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
      applicationName="/" />
  </providers>
</membership>
<roleManager defaultProvider="DefaultRoleProvider">
  <providers>
    <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
  </providers>
</roleManager>

Все параметры для авторизации хорошо описаны в msdn и их можно найти в интернете. Стоит только заметить, что мои настройки отличаются от настройок по-умолчанию тем, что я шифрую пароль пользователя (passwordFormat="Encrypted"). Для шифрования нужно также добавить ключи в web.config. Их нужно менять для каждого проекта:

<!-- decryptionKey - 48 символов (для востановления пароля по алгоритму AES),
         validationKey - любое (для сравнения хешированных значений по алгоритму SHA1) -->
    <machineKey validation="SHA1" validationKey="9999C9ABA99999E9B999DD99F7A99BBD999EBCB9999F9DCA8B2C53FDEE4E877C" decryption="AES" decryptionKey="ED99BBC9C9CB999BAE99B9CEE43A4606B2B99999CE9E9EEE"/>

Эту строку нужно добавить после параметра </membership>

 Теперь добавим нужные DLL в проект. Для этого будем использовать NuGet (описание его установки: docs.nuget.org/docs/start-here/installing-nuget). Для установки, нужно вызвать команду "Install-Package System.Web.Providers"

После установки у вас измениться web.config. Нужно по удалять новые параметры roleManager membership profile, оставить только наши.

После этого выбираем меню Project ->"ASP.NET Configuration..."

У вас откроется браузер, из настройками сайта. Переходим на страничку Security.

Активируем роли (жмем Enable roles). Создаем две роли (Create or Manage roles),  например Admin и User. Так же можем создать пользователя.

После того как все настройки сделаны, можем запустить проект и войти созданным пользователем

 

Asp.net для начинающих. Содержание

 

Самостоятельный отпуск Опыт заказа вывоза мусора в Киеве Магія зміни: Від ночі до дня
Магія Вечірнього Неба: Відлякуйте втомленість дня і зануртеся у світ загадок і краси