Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
С момента написания этой статьи, поставщики членства ASP.NET были заменены на ASP.NET Identity. Настоятельно рекомендуется обновлять приложения для использования платформы ASP.NET Identity вместо поставщиков членства, которые использовались на момент написания этой статьи. ASP.NET Identity имеет ряд преимуществ по сравнению с системой членства ASP.NET, в том числе:
- Улучшенная производительность
- Улучшенная расширяемость и возможность тестирования
- Поддержка OAuth, OpenID Connect и двухфакторной проверки подлинности
- Поддержка идентификации на основе утверждений
- Улучшение взаимодействия с ASP.Net Core
Средство администрирования веб-сайтов (WSAT) ASP.NET предоставляет веб-интерфейс для настройки параметров членства и ролей, а также для создания, редактирования и удаления пользователей и ролей. К сожалению, WSAT работает только при посещении из localhost, что означает, что вы не можете получить доступ к средству администрирования рабочего веб-сайта через браузер. Хорошая новость заключается в том, что существуют обходные пути, которые позволяют управлять пользователями и ролями в рабочей среде. В этом руководстве рассматриваются эти обходные пути и другие.
Введение
ASP.NET 2.0 появился ряд служб приложений, которые являются набором стандартных блоковых служб, которые можно добавить в веб-приложение. Мы добавили службы участия и ролей на веб-сайт обзоров книг еще в руководстве по настройке веб-сайта, использующего службы приложений. Служба членства упрощает создание учетных записей пользователей и управление ими; Служба ролей предлагает API для классификации пользователей в группы. Сайт "Отзывы книг" имеет три учетных записи пользователей - Скотт, Джисун и Алиса - и одна роль, администратор с Скоттом и Джисуном в роли администратора.
Службы приложений ASP.NET не привязаны к определенной реализации. Вместо этого вы указываете службам приложений использовать определенный поставщик, и этот поставщик реализует службу с помощью определенной технологии. Мы настроили веб-приложение для рецензий на книги для использования поставщиков 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 — управляйте настройками приложения и 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. База данных, используемая этими поставщиками, определяется атрибутом connectionStringName
, ReviewsConnectionString
который определен в ~/ConfigSections/databaseConnectionStrings.config
файле. Помните, что databaseConnectionStrings.config
файл в среде разработки содержит строку подключения к базе данных разработки, а databaseConnectionStrings.config
файл в рабочей среде содержит строку подключения к рабочей базе данных.
Вкратце, необходимо локально получить доступ к WSAT через среду разработки, и он работает с сведениями о пользователе и роли в базе данных, указанной в файле databaseConnectionStrings.config
. Следовательно, если изменить сведения о строке подключения в databaseConnectionStrings.config
файле в среде разработки, можно локально использовать WSAT для управления пользователями и ролями в рабочей среде.
Чтобы проиллюстрировать эту функцию, откройте databaseConnectionStrings.config
файл в Visual Studio в среде разработки и замените строку подключения к базе данных разработки строкой подключения к рабочей базе данных. Затем запустите WSAT, перейдите на вкладку "Безопасность" и добавьте нового пользователя с именем Sam.
На рисунке 2 показан экран WSAT при создании этой учетной записи.
Рис. 2. Создание пользователя с именем Sam в рабочей среде
(Щелкните, чтобы просмотреть изображение полного размера)
Поскольку строка подключения databaseConnectionStrings.config
была изменена для указания на сервер продуктивной базы данных, Sam был добавлен как пользователь в продуктивной среде. Чтобы проверить это, измените строку подключения в файле обратно в databaseConnectionStrings.config
базу данных разработки, а затем перейдите на Login.aspx
страницу в среде разработки. Попробуйте войти как Сэм (см . рис. 3).
Рис. 3. Вы не можете войти как Sam в среде разработки.
(Щелкните, чтобы просмотреть изображение полного размера)
Невозможно выполнить вход в качестве Sam в среде разработки, так как сведения об учетной записи пользователя не существуют в локальной базе данных. Скорее, он был добавлен в рабочую базу данных. Чтобы проверить это, просмотрите содержимое aspnet_Users
таблицы как в базах данных разработки, так и в рабочей среде. В среде разработки должно быть только три записи для пользователей Скотта, Джисуна и Алисы. Однако таблица aspnet_Users
в рабочей базе данных содержит четыре записи: Скотт, Цзисун, Алиса и Сэм. Следовательно, Сэм может войти через веб-сайт в рабочей среде, но не через среду разработки.
Рис. 4. Сэм может войти на рабочий веб-сайт
(Щелкните, чтобы просмотреть изображение полного размера)
Замечание
Не забудьте изменить строку подключения в databaseConnectionStrings.config
файле обратно в строку подключения базы данных разработки, когда вы завершите работу с WSAT, в противном случае при тестировании сайта через среду разработки вы будете работать с рабочими данными. Кроме того, учитывайте, что в то время как метод, который мы только что обсуждали, позволяет использовать WSAT для удаленного управления пользователями и ролями, изменения любого из других параметров конфигурации WSAT (правила доступа, параметры SMTP, отладка и трассировка параметров и т. д.) вносят изменения в файл Web.config
. Следовательно, любые изменения, внесенные в параметры, применяются к среде разработки, а не к рабочей среде.
Создание пользовательских веб-страниц управления пользователями и ролями
WSAT предоставляет стандартную систему для управления пользователями и ролями, но может запускаться только локально и требует внесения изменений в сведения строки подключения для управления пользователями и ролями в рабочей среде. Большинство веб-сайтов, поддерживающих учетные записи пользователей, также включают ряд веб-страниц администрирования пользователей и ролей, которые позволяют администраторам управлять пользователями и ролями с страниц на сайте. Веб-страницы администрирования значительно упрощают управление пользователями и ролями и важны для сайтов, где может быть много администраторов или у которых нет доступа к Visual Studio или достаточного технического опыта для запуска WSAT.
ASP.NET включает ряд встроенных веб-элементов управления, связанных с входом в систему, которые позволяют реализовать многие из этих административных веб-страниц так же просто, как перетаскивание элементов мышью. Например, можно создать страницу для администраторов, чтобы создать новую учетную запись пользователя, перетащив элемент управления CreateUserWizard на страницу и задав несколько свойств. На самом деле страница для создания пользователей в WSAT, показанной на рис. 2 , использует тот же элемент управления CreateUserWizard, который можно добавить на страницы. Кроме того, функции служб членства и ролей доступны программным способом через Membership
платформу .NET Framework и Roles
классы. С помощью этих классов можно написать код для создания, редактирования и удаления пользователей и ролей, а также для добавления или удаления пользователей в роли, чтобы определить, какие пользователи находятся в каких ролях, а также выполнять другие задачи, связанные с пользователями и ролями.
В руководстве по настройке веб-сайта, использующего службы приложений, я добавил страницу в папку 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 и используется различными пользователями администрирования с любого компьютера.
Счастливое программирование!
Дальнейшее чтение
Дополнительные сведения о разделах, описанных в этом руководстве, см. в следующих ресурсах:
- Изучение членства, ролей и профиля в ASP.NET
- Развертывание собственного средства администрирования веб-сайта
- Обзор средства администрирования веб-сайта
- Руководства по безопасности веб-сайтов