Пользователи и роли на рабочем веб-сайте (C#)

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

Примечание

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

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

Средство администрирования веб-сайта ASP.NET (WSAT) предоставляет пользовательский веб-интерфейс для настройки параметров членства и ролей, а также для создания, редактирования и удаления пользователей и ролей. К сожалению, WSAT работает только при посещении из localhost, а это означает, что вы не можете получить доступ к средству администрирования рабочего веб-сайта через браузер. Хорошей новостью является то, что существуют обходные пути, позволяющие управлять пользователями и ролями в рабочей среде. В этом руководстве рассматриваются эти и другие обходные пути.

Введение

ASP.NET 2.0 появился ряд служб приложений, которые представляют собой набор стандартных служб, которые можно добавить в веб-приложение. Мы добавили службы членства и ролей на веб-сайт Обзоры книг еще в руководстве По настройке веб-сайта, использующего службы приложений. Служба членства упрощает создание учетных записей пользователей и управление ими; Служба ролей предлагает API для классификации пользователей по группам. На сайте обзоров книг есть три учетные записи пользователей - Скотт, Джисун и Алиса - и одна роль, Администратор, с Скоттом и Jisun в Администратор роли.

ASP. Службы приложений NET не привязаны к определенной реализации. Вместо этого вы указываете службам приложений использовать определенный поставщик, и этот поставщик реализует службу с помощью определенной технологии. Мы настроили веб-приложение Book Reviews для использования SqlMembershipProvider поставщиков и SqlRoleProvider для служб членства и ролей. Эти два поставщика хранят сведения об учетной записи пользователя и роли в базе данных SQL Server и являются наиболее часто используемыми поставщиками для интернет-приложений, размещенных в компании по размещению веб-сайтов.

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

Использование средства администрирования веб-сайта ASP.NET

ASP.NET включает средство администрирования веб-сайтов (WSAT), которое позволяет легко создавать учетные записи пользователей и роли и управлять ими, а также указывать правила авторизации на основе пользователей и ролей. Чтобы использовать WSAT, щелкните значок конфигурации ASP.NET в Обозреватель решения или перейдите в меню Веб-сайт или Проект и выберите параметр Конфигурация ASP.NET. Любой из этих подходов запускает веб-браузер и указывает на WSAT по адресу, например: http://localhost:portNumber/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=pathToApplication

WSAT состоит из трех разделов:

  • Безопасность — управление пользователями, ролями и правилами авторизации.
  • ApplicationConfiguration — управление параметрами <appSettings> и SMTP отсюда. Вы также можете перевести приложение в автономный режим и управлять параметрами отладки и трассировки отсюда, а также указать пользовательскую страницу ошибок по умолчанию.
  • ProviderConfiguration — настройка поставщиков, используемых службами приложений.

Раздел Безопасность (показан на рис. 1) содержит ссылки для создания новых пользователей, управления пользователями, создания ролей и управления ими, а также создания правил доступа и управления ими. Здесь можно добавить новую роль в систему, удалить существующего пользователя или добавить или удалить роли из определенной учетной записи пользователя.

Снимок экрана: параметры управления пользователями и ролями.

Рис. 1. Раздел "Безопасность WSAT" содержит параметры для управления пользователями и ролями
(Щелкните для просмотра полноразмерного изображения)

К сожалению, WSAT доступен только локально. Вы не можете посетить WSAT на удаленном рабочем веб-сайте; При посещении www.yoursite.com/asp.netwebadminfiles/default.aspx вы получите ответ 404 Not Found. Код, который обеспечивает WSAT, использует Membership классы и Roles в платформа .NET Framework для создания, изменения и удаления пользователей и ролей. Эти классы обращаются к сведениям о конфигурации веб-приложения, чтобы определить, какой поставщик использовать; В руководстве По настройке веб-сайта, использующего службы приложений, мы настроим веб-сайт обзоров книг для использования SqlMembershipProvider поставщиков и SqlRoleProvider . Это повлекло за собой добавление <membership> разделов и <roleManager> в Web.config.

<?xml version="1.0"?>
<configuration>
  ...

  <connectionStrings configSource="ConfigSections\databaseConnectionStrings.config" />

  <system.web>
  ...

  <membership defaultProvider="ReviewMembership">
  <providers>
  <clear />

  <add type="System.Web.Security.SqlMembershipProvider" 
  name="ReviewMembership" 
  connectionStringName="ReviewsConnectionString" 
  applicationName="BookReviews" />
  </providers>
  </membership>

  <roleManager enabled="true" defaultProvider="ReviewRole">
  <providers>
  <clear />

  <add type="System.Web.Security.SqlRoleProvider" 
  name="ReviewRole" 
  connectionStringName="ReviewsConnectionString" 
  applicationName="BookReviews" />
  </providers>
  </roleManager>
  </system.web>

  ...
</configuration>

Обратите внимание, что <membership> разделы и <roleManager> ссылались на SqlMembershipProvider поставщики и SqlRoleProvider в их type атрибуте соответственно. Эти поставщики хранят сведения о пользователе и роли в указанной базе данных SQL Server. База данных, используемая этими поставщиками, ReviewsConnectionStringзадается атрибутом connectionStringName , который определен в ~/ConfigSections/databaseConnectionStrings.config файле . Помните, что databaseConnectionStrings.config файл в среде разработки содержит строку подключения к базе данных разработки databaseConnectionStrings.config , а файл в рабочей среде содержит строку подключения к рабочей базе данных.

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

Чтобы проиллюстрировать эту функцию, откройте databaseConnectionStrings.config файл в Visual Studio в среде разработки и замените строку подключения к базе данных разработки строкой подключения к рабочей базе данных. Затем запустите WSAT, перейдите на вкладку Безопасность и добавьте нового пользователя Sam с паролем "password!" (за вычетом кавычек). На рисунке 2 показан экран WSAT при создании этой учетной записи.

Снимок экрана: новый пользователь, созданный в рабочей среде.

Рис. 2. Создание пользователя с именем Sam в рабочей среде
(Щелкните для просмотра полноразмерного изображения)

Так как мы изменили строку подключения в , databaseConnectionStrings.config чтобы она указывала на рабочий сервер базы данных, Sam был добавлен в качестве пользователя в рабочей среде. Чтобы проверить это, измените строку подключения в databaseConnectionStrings.config файле обратно на базу данных разработки, а затем перейдите на страницу Login.aspx в среде разработки. Попробуйте войти от имени Сэма (см . рис. 3).

Снимок экрана: невозможно войти в среду разработки под учетной записью Sam.

Рис. 3. Вы не можете войти под учетной записью Sam в среде разработки
(Щелкните для просмотра полноразмерного изображения)

Вы не можете войти в качестве Sam в среде разработки, так как сведения об учетной записи пользователя не существуют в локальной базе данных. Вместо этого параметр был добавлен в рабочую базу данных. Чтобы проверить это, просмотрите содержимое aspnet_Users таблицы в базах данных разработки и рабочей базе данных. В среде разработки должно быть только три записи для пользователей Скотта, Jisun и Алисы. aspnet_Users Однако таблица в рабочей базе данных содержит четыре записи: Скотт, Джисун, Алиса и Сэм. Следовательно, Сэм может войти через веб-сайт в рабочей среде, но не через среду разработки.

Снимок экрана, на котором показано, что Сэм может войти на рабочий веб-сайт.

Рис. 4. Сэм может войти на рабочий веб-сайт
(Щелкните для просмотра полноразмерного изображения)

Примечание

Не забудьте изменить строку подключения в databaseConnectionStrings.config файле обратно на строку подключения базы данных разработки после завершения работы с WSAT, в противном случае вы будете работать с рабочими данными при тестировании сайта в среде разработки. Кроме того, помните, что хотя только что рассмотренный метод позволяет использовать WSAT для удаленного управления пользователями и ролями, изменения в любых других параметрах конфигурации WSAT (правила доступа, параметры SMTP, параметры отладки и трассировки и т. д.) изменяют Web.config файл. Следовательно, любые изменения, внесенные в параметры, применяются к среде разработки, а не к рабочей среде.

Создание пользовательских веб-страниц управления пользователями и ролями

WSAT предоставляет готовую систему для управления пользователями и ролями, но может запускаться только локально и требует внесения изменений в сведения о строке подключения для управления пользователями и ролями в рабочей среде. Большинство веб-сайтов, поддерживающих учетные записи пользователей, также содержат ряд веб-страниц администрирования пользователей и ролей, которые позволяют администраторам управлять пользователями и ролями на страницах сайта. Такие веб-страницы администрирования значительно упрощают управление пользователями и ролями и важны для сайтов, где может быть много администраторов или администраторов, у которых нет доступа или технического фона для использования Visual Studio для запуска WSAT.

ASP.NET включает в себя ряд встроенных веб-элементов управления, связанных с входом, которые упрощают реализацию многих административных веб-страниц так же, как перетаскивание. Например, вы можете создать страницу для администраторов, чтобы создать новую учетную запись пользователя, перетащив элемент управления CreateUserWizard на страницу и задав несколько свойств. На самом деле страница для создания пользователей в WSAT, показанная на рис. 2 , использует тот же элемент управления CreateUserWizard, который можно добавить на страницы. Кроме того, функции служб членства и ролей доступны программным способом через классы Membership и Roles в платформа .NET Framework. С помощью этих классов можно написать код для создания, изменения и удаления пользователей и ролей, а также для добавления или удаления пользователей в роли, определения пользователей в каких ролях, а также для выполнения других задач, связанных с пользователями и ролями.

В учебнике Настройка веб-сайта, использующего службы приложений, я добавил страницу в папку Admin с именем CreateAccount.aspx. Эта страница позволяет администратору добавить новую учетную запись пользователя на сайт и указать, входит ли созданный пользователь в роль Администратор (см. рис. 5).

Снимок экрана: администраторы могут создавать новые учетные записи пользователей.

Рис. 5. Администраторы могут создавать новые учетные записи пользователей
(Щелкните для просмотра полноразмерного изображения)

Чтобы получить более подробные сведения о создании страниц администрирования пользователей и ролей, а также пошаговые инструкции по использованию Membership классов и , Roles а также веб-элементов управления ASP.NET входа, обязательно ознакомьтесь с моими руководствами по безопасности веб-сайтов. Здесь вы найдете рекомендации по созданию веб-страниц для создания новых учетных записей, создания ролей и управления ими, назначения пользователям ролей и других распространенных административных задач.

Для реализации функций WSAT на рабочем веб-сайте всегда можно создать собственную серию веб-страниц, реализующих функции WSAT. Чтобы приступить к работе, проверка исходный код WSAT, который находится в папке %WINDIR%\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles. Другой вариант заключается в том, чтобы использовать альтернативу WSAT Дэна Клема, которую он разделяет в своей статье Rolling Your Own Web Site Administration Tool. Дэн описывает процесс создания пользовательского средства WSAT, включает исходный код приложения для скачивания (на C#) и предоставляет пошаговые инструкции по добавлению пользовательского WSAT на размещенный веб-сайт.

Сводка

Средство администрирования веб-сайтов ASP.NET (WSAT) можно использовать в сочетании со службами приложений членства и ролей для управления сведениями о пользователях и ролях для веб-сайта. К сожалению, WSAT доступен только локально и не может быть посещен с рабочего веб-сайта. Однако, изменив строку подключения в среде разработки, чтобы она указывала на рабочую базу данных, можно использовать WSAT для управления пользователями и ролями на рабочем веб-сайте.

Хотя подход WSAT предоставляет быстрый и простой способ управления пользователями и ролями, он требует запуска WSAT из Visual Studio, а также временных изменений в сведениях о строке подключения. WSAT предлагает быстрый способ управления пользователями и ролями в рабочей среде, но является громоздким и не подходит для веб-сайтов с несколькими администраторами или администраторами, которые не имеют или не знакомы с Visual Studio и WSAT. По этим причинам большинство веб-сайтов, поддерживающих учетные записи пользователей, включают набор административных веб-страниц. Такой набор веб-страниц устраняет необходимость в WSAT и используется различными пользователями с любого компьютера.

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

Дополнительные материалы

Дополнительные сведения о темах, рассмотренных в этом руководстве, см. в следующих ресурсах: