Пользователи и роли на рабочем веб-сайте (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).
Рис. 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 и используется различными пользователями с любого компьютера.
Счастливого программирования!
Дополнительные материалы
Дополнительные сведения о темах, рассмотренных в этом руководстве, см. в следующих ресурсах:
- Изучение ASP. Членство, роли и профиль NET
- Развертывание собственного средства администрирования веб-сайта
- Обзор средства администрирования веб-сайтов
- Учебники по безопасности веб-сайтов