Пользователи и роли на рабочем веб-C#сайте ()Users and Roles On The Production Website (C#)

по Скотт Митчеллby Scott Mitchell

Скачать в формате PDFDownload PDF

Средство администрирования веб-сайта ASP.NET (WSAT) предоставляет пользовательский веб-интерфейс для настройки параметров членства и ролей, а также для создания, изменения и удаления пользователей и ролей.The ASP.NET Website Administration Tool (WSAT) provides a web-based user interface for configuring Membership and Roles settings and for creating, editing, and deleting users and roles. К сожалению, WSAT работает только при посещении из localhost, что означает, что вы не можете подключиться к средству администрирования рабочего веб-сайта через браузер.Unfortunately, the WSAT only works when visited from localhost, meaning that you cannot reach the production website's Administration Tool through your browser. Хорошая новость состоит в том, что Существуют обходные пути, делающие возможным управление пользователями и ролями в рабочей среде.The good news is that there are workarounds that make it possible to manage users and roles on production. В этом учебнике рассматриваются эти обходные пути и другие решения.This tutorial looks at these workarounds and others.

ВведениеIntroduction

В ASP.NET 2,0 появился ряд служб приложений, которые представляют собой набор стандартных блочных служб, которые можно добавить в веб-приложение.ASP.NET 2.0 introduced a number of application services, which are a suite of building block services that you can add to your web application. Мы добавили службы членства и ролей на веб-сайт рецензирования книги обратно в настройке веб-сайта, который использует службы приложений учебник.We added the Membership and Roles services to the Book Reviews website back in the Configuring a Website That Uses Application Services tutorial. Служба членства упрощает создание учетных записей пользователей и управление ими; Служба ролей предоставляет API для категоризации пользователей по группам.The Membership service facilitates creating and managing user accounts; the Roles service offers an API for categorizing users into groups. На сайте обзоры книг есть три учетных записи пользователей — Скотт, Цзисунь и Алиса — и одна роль (администратор) с Скотт и Цзисунь в роли администратора.The Book Reviews site has three user accounts - Scott, Jisun, and Alice - and a single role, Admin, with Scott and Jisun in the Admin role.

Сценарии. Службы приложений NET не привязаны к определенной реализации.ASP.NET's application services are not tied to a specific implementation. Вместо этого вы указываете службам приложений на использование определенного поставщика, и этот поставщик реализует службу с помощью определенной технологии.Instead, you instruct the application services to use a particular provider, and that provider implements the service using a particular technology. Мы настроили веб-приложение "Рецензирование книги" для использования поставщиков SqlMembershipProvider и SqlRoleProvider для служб членства и ролей.We configured the Book Reviews web application to use the SqlMembershipProvider and SqlRoleProvider providers for the Membership and Roles services. Эти два поставщика хранят учетную запись пользователя и сведения о ролях в базе данных SQL Server и являются наиболее часто используемыми поставщиками для веб-приложений, размещенных в компании, на которой размещены веб-приложения.These two providers store user account and role information in a SQL Server database and are the most commonly used providers for Internet-based web applications hosted at a web hosting company.

Распространенной проблемой для разработчиков, использующих службы членства и ролей, является Управление пользователями и ролями в рабочей среде.A common challenge for developers using the Membership and Roles services is managing the users and roles on the production environment. Как удалить учетную запись пользователя с рабочего веб-сайта, добавить новую роль или добавить существующего пользователя к существующей роли?How do you delete a user account from the production website, add a new role, or add an existing user to an existing role? В этом руководстве рассматриваются различные методы управления пользователями и ролями на рабочем веб-сайте.This tutorial explores different techniques for managing users and roles on the production website.

Использование средства администрирования веб-сайта ASP.NETUsing the ASP.NET Web Site Administration Tool

ASP.NET включает средство администрирования веб-сайтов (WSAT), которое упрощает создание учетных записей пользователей и ролей и управление ими, а также определение правил авторизации на основе ролей и пользователей.ASP.NET includes a Web Site Administration Tool (WSAT) that makes it easy to create and manage user accounts and roles and to specify user- and role-based authorization rules. Чтобы использовать WSAT, щелкните значок конфигурации ASP.NET на обозреватель решений или перейдите в меню веб-сайт или проект и выберите параметр конфигурации ASP.NET.To use the WSAT, click the ASP.NET Configuration icon in the Solution Explorer, or go to the Website or Project menu and choose the ASP.NET Configuration option. Любой из этих подходов запускает веб-браузер и указывает на WSAT по адресу, например: http://localhost:portNumber/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=pathToApplicationEither approach launches a web browser and points it to the WSAT at an address like: http://localhost:portNumber/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=pathToApplication

WSAT состоит из трех разделов:The WSAT is divided into three sections:

  • Безопасность — Управление пользователями, ролями и правилами авторизации.Security - manage users, roles, and authorization rules.
  • Аппликатионконфигуратион — управление параметрами> <APPSETTINGS и SMTP.ApplicationConfiguration - manage the <appSettings> and SMTP settings from here. Вы также можете перевести приложение в автономный режим и управлять параметрами отладки и трассировки, а также задать настраиваемую страницу ошибки по умолчанию.You can also take the application offline and manage debugging and tracing settings from here, as well as specify the default custom error page.
  • Провидерконфигуратион — Настройка поставщиков, используемых службами приложений.ProviderConfiguration - configure the providers used by the application services.

Раздел безопасности (показанный на рис. 1) содержит ссылки для создания новых пользователей, управления пользователями, создания ролей и управления ими, а также создания и управления правилами доступа.The Security section (shown in Figure 1) includes links for creating new users, managing users, creating and managing roles, and creating and managing access rules. Отсюда можно добавить в систему новую роль, удалить существующего пользователя или добавить или удалить роли из конкретной учетной записи пользователя.From here you can add a new role to the system, delete an existing user, or add or remove roles from a particular user account.

Рис. 1. раздел безопасности WSAT включает параметры для управления пользователями и ролямиFigure 1: The WSAT Security Section Includes Options for Managing Users and Roles
(Щелкните, чтобы просмотреть изображение с полным размером)(Click to view full-size image)

К сожалению, WSAT доступен только локально.Unfortunately, the WSAT is only accessible locally. Вы не можете посетить WSAT на удаленном рабочем веб-сайте; Если вы посещаете www.yoursite.com/asp.netwebadminfiles/default.aspx вы получаете ответ 404 не найден.You cannot visit the WSAT on your remote production website; if you visit www.yoursite.com/asp.netwebadminfiles/default.aspx you get a 404 Not Found response. Код, который выполняет WSAT, использует классы Membership и Roles в .NET Framework для создания, изменения и удаления пользователей и ролей.The code that powers the WSAT uses the Membership and Roles classes in the .NET Framework to create, edit, and delete users and roles. Эти классы обращаются к сведениям о конфигурации веб-приложения, чтобы определить, какой поставщик следует использовать. Вернитесь к настройке веб-сайта, в котором используется службы приложений учебник по настройке веб-сайта проверки книги для использования поставщиков SqlMembershipProvider и SqlRoleProvider.These classes consult the web application's configuration information to determine what provider to use; back in the Configuring a Website That Uses Application Services tutorial we setup the Book Reviews website to use the SqlMembershipProvider and SqlRoleProvider providers. Это влечет за собой добавление <membership> и <roleManager> разделов в Web.config.This entailed adding <membership> and <roleManager> sections to 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 соответственно.Note that the <membership> and <roleManager> sections reference the SqlMembershipProvider and SqlRoleProvider providers in their type attribute, respectively. Эти поставщики хранят сведения о пользователях и ролях в указанной SQL Server базе данных.These providers store the user and role information in a specified SQL Server database. База данных, используемая этими поставщиками, задается атрибутом connectionStringName ReviewsConnectionString, который определен в файле ~/ConfigSections/databaseConnectionStrings.config.The database used by these providers is specified by the connectionStringName attribute, ReviewsConnectionString, which is defined in the ~/ConfigSections/databaseConnectionStrings.config file. Помните, что файл databaseConnectionStrings.config в среде разработки содержит строку подключения к базе данных разработки, а databaseConnectionStrings.config файл в рабочей среде содержит строку подключения к рабочей базе данных.Recall that the databaseConnectionStrings.config file in the development environment contains the connection string to the development database whereas the databaseConnectionStrings.config file on production contains the connection string to the production database.

В двух словах, WSAT должен быть доступен локально через среду разработки и работает с данными о пользователях и ролях в базе данных, указанной в файле databaseConnectionStrings.config.In a nutshell, the WSAT must be accessed locally through the development environment, and it works with the user and role information in the database specified in the databaseConnectionStrings.config file. Следовательно, если изменить данные строки подключения в файле databaseConnectionStrings.config в среде разработки, можно использовать WSAT локально для управления пользователями и ролями в рабочей среде.Consequently, if we change the connection string information in the databaseConnectionStrings.config file on the development environment we can use the WSAT locally to manage users and roles in the production environment.

Чтобы продемонстрировать эту функциональность, откройте файл databaseConnectionStrings.config в Visual Studio в среде разработки и замените строку подключения к базе данных разработки строкой подключения к рабочей базе данных.To illustrate this functionality, open the databaseConnectionStrings.config file in Visual Studio on the development environment and replace the development database connection string with the production database connection string. Затем запустите WSAT, перейдите на вкладку Безопасность и добавьте нового пользователя с именем SAM и паролем!.Then launch the WSAT, go the Security tab, and add a new user named Sam with password "password!" (меньше кавычек).(less the quotation marks). На рис. 2 ПОКАЗАН экран WSAT при создании этой учетной записи.Figure 2 shows the WSAT screen when creating this account.

Рис. 2. Создание нового пользователя с именем SAM в рабочей средеFigure 2: Create a New User Named Sam In the Production Environment
(Щелкните, чтобы просмотреть изображение с полным размером)(Click to view full-size image)

Так как мы изменили строку подключения в databaseConnectionStrings.config, чтобы она указывала на сервер рабочей базы данных, администратор добавил в рабочую среду в качестве пользователя.Because we changed the connection string in databaseConnectionStrings.config to point to the production database server, Sam was added as a user in the production environment. Чтобы проверить это, измените строку подключения в файле databaseConnectionStrings.config обратно на базу данных разработки, а затем перейдите на страницу Login.aspx в среде разработки.To verify this, change the connection string in the databaseConnectionStrings.config file back to the development database and then visit the Login.aspx page in the development environment. Попробуйте войти как SAM (см. рис. 3).Try to sign in as Sam (see Figure 3).

Рис. 3. невозможно войти в систему как SAM в среде разработкиFigure 3: You Cannot Sign In As Sam in the Development Environment
(Щелкните, чтобы просмотреть изображение с полным размером)(Click to view full-size image)

Невозможно войти в систему как SAM в среде разработки, так как сведения об учетной записи пользователя не существуют в локальной базе данных.You cannot sign in as Sam in the development environment because the user account information does not exist in the local database. Вместо этого был добавлен в рабочую базу данных.Rather, is was added to the production database. Чтобы проверить это, просмотрите содержимое таблицы aspnet_Users в базах данных разработки и рабочей среде.To verify this, view the contents of the aspnet_Users table in both the development and production databases. В среде разработки для пользователей Скотт, Цзисунь и Alice должно быть только три записи.In the development environment there should be only three records for users Scott, Jisun, and Alice. Однако таблица aspnet_Users в рабочей базе данных содержит четыре записи: Скотт, Цзисунь, Alice и SAM.However, the aspnet_Users table in the production database has four records: Scott, Jisun, Alice, and Sam. Следовательно, Сэм может выполнить вход через веб-сайт в рабочей среде, но не через среду разработки.Consequently, Sam can sign in through the website in production, but not through the development environment.

Рисунок 4. SAM может войти на рабочий веб-сайтFigure 4: Sam Can Sign In On the Production Website
(Щелкните, чтобы просмотреть изображение с полным размером)(Click to view full-size image)

Note

Не забудьте изменить строку подключения в файле databaseConnectionStrings.config обратно на строку подключения базы данных разработки после завершения работы с WSAT. в противном случае вы будете работать с рабочими данными при тестировании сайта в среде разработки.Don't forget to change the connection string in the databaseConnectionStrings.config file back to the development database's connect string when you're done working with the WSAT otherwise you will be working with production data when testing the site through the development environment. Также следует помнить, что хотя методика, которую мы только что обсуждали, позволяет использовать WSAT для удаленного управления пользователями и ролями, изменения любых других параметров конфигурации WSAT (правила доступа, параметры SMTP, параметры отладки и трассировки и т. д.) изменяют файл Web.config.Also keep in mind that while the technique we just discussed allows us to use the WSAT to remotely manage users and roles, changes to any of the other WSAT configuration options (access rules, SMTP settings, debugging and tracing settings, and so on) modify the Web.config file. Следовательно, любые изменения параметров применяются к среде разработки, а не к рабочей среде.Consequently, any changes made to the settings apply to the development environment and not to the production environment.

Создание настраиваемых веб-страниц для управления пользователями и ролямиCreating Custom User and Role Management Web Pages

WSAT предоставляет готовую систему для управления пользователями и ролями, но может запускаться только локально и требует внесения изменений в строки подключения для управления пользователями и ролями в рабочей среде.The WSAT provides an out of the box system for managing users and roles, but can only be launched locally and requires making changes to the connection string information in order to manage the users and roles on production. Большинство веб-сайтов, поддерживающих учетные записи пользователей, также включают ряд веб-страниц администрирования ролей и пользователей, которые позволяют администраторам управлять пользователями и ролями на страницах сайта.Most websites that support user accounts also include a number of user and role administration web pages that enable administrators to manage users and roles from pages within the site. Такие веб-страницы администрирования значительно упрощают управление пользователями и ролями и являются обязательными для сайтов, где может быть несколько администраторов или администраторов, которые не имеют доступа к или техническим специалистам по использованию Visual Studio для запуска WSAT.Such web-based administration pages make it much easier to manage users and roles and are essential for sites where there may be many administrators or administrators that do not have access to or the technical background to use Visual Studio to launch the WSAT.

ASP.NET включает ряд встроенных веб-элементов управления, связанных с входом, которые позволяют реализовать многие из этих административных веб-страниц так же просто, как перетаскивание.ASP.NET includes a number of built-in Login-related Web controls that make implementing many of these administrative web pages as easy as drag and drop. Например, можно создать страницу для администраторов, чтобы создать новую учетную запись пользователя, перетащив элемент управления CreateUserWizard на страницу и задав несколько свойств.For example, you can create a page for administrators to create a new user account by dragging the CreateUserWizard control onto the page and setting a few properties. На самом деле, страница для создания пользователей в WSAT, показанная на рис. 2 , использует тот же элемент управления CreateUserWizard, который можно добавить на страницы.In fact, the page for creating users in the WSAT shown in Figure 2 uses the same CreateUserWizard control that you can add to your pages. Более того, функциональные возможности служб членства и ролей доступны программно с помощью классов Membership и Roles в .NET Framework.Furthermore, the Membership and Roles services' functionalities are available programmatically through the Membership and Roles classes in the .NET Framework. С помощью этих классов можно написать код для создания, изменения и удаления пользователей и ролей, а также для добавления или удаления пользователей в ролях, для определения того, какие пользователи находятся в ролях, а также для выполнения других задач, связанных с пользователями и ролями.With these classes you can write code to create, edit, and delete users and roles, as well as to add or remove users to roles, to determine what users are in what roles, and to perform other user- and role-related tasks.

В настройке веб-сайта, использующего службы приложений учебник, я добавил страницу в папку Admin с именем CreateAccount.aspx.In the Configuring a Website That Uses Application Services tutorial I added a page to the Admin folder named CreateAccount.aspx. Эта страница позволяет администратору добавить новую учетную запись пользователя на сайт и указать, является ли созданный пользователь ролью администратора (см. рис. 5).This page allows an administrator to add a new user account to the site and to specify whether or not the newly created user is in the Admin role (see Figure 5).

Рис. 5. Администраторы могут создавать новые учетные записи пользователейFigure 5: Administrators Can Create New User Accounts
(Щелкните, чтобы просмотреть изображение с полным размером)(Click to view full-size image)

Дополнительные сведения о создании страниц администрирования пользователей и ролей, а также пошаговые инструкции по использованию классов Membership и Roles и ASP.NET веб-элементов управления для входа в систему см. в руководствах по безопасности веб-сайтов.For a more detailed look at building user and role administration pages, along with step-by-step instructions on using the Membership and Roles classes and the Login-related ASP.NET Web controls, be sure to read my Website Security Tutorials. Здесь вы найдете руководство по созданию веб-страниц для создания новых учетных записей, созданию ролей и управлению ими, назначению пользователей ролям и другим общим задачам администрирования.There you'll find guidance on how to build web pages for creating new accounts, creating and managing roles, assigning users to roles, and other common administrative tasks.

Для реализации WSAT функций на рабочем веб-сайте всегда можно создать собственный ряд веб-страниц, реализующих функции WSAT.To implement WSAT-like functionality on the production website you can always build your own series of web pages that implement the WSAT's features. Чтобы приступить к работе, ознакомьтесь с исходным кодом WSAT, который находится в папке %WINDIR%\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles.To help get started, check out the WSAT source code, which is located in the folder %WINDIR%\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles. Другой вариант — использовать альтернативу WSAT для Клем, который он использует в своей статье, чтобы выполнить развертывание собственного средства администрирования веб-сайта.Another option is to use Dan Clem's WSAT alternative, which he shares in his article, Rolling Your Own Web Site Administration Tool. Самое время познакомит читателей с процессом создания настраиваемого инструмента WSAT, включающего его исходный код приложения (в C#) и предоставляющий пошаговые инструкции по добавлению пользовательского WSAT на размещенный веб-сайт.Dan walks readers through the process of building a custom WSAT-like tool, includes his application's source code for download (in C#), and gives step-by-step instructions for adding his custom WSAT to a hosted website.

СводкаSummary

Средство администрирования веб-сайта ASP.NET (WSAT) можно использовать совместно со службами приложений членства и ролей для управления сведениями о пользователях и ролях для веб-сайта.The ASP.NET Web Site Administration Tool (WSAT) can be used in tandem with the Membership and Roles application services to manage user and role information for your website. К сожалению, WSAT доступен только локально и не может быть посещен с рабочего веб-сайта.Unfortunately, the WSAT is only accessible locally and cannot be visited from your production website. Однако, изменив строку подключения в среде разработки, чтобы она указывала на рабочую базу данных, вы можете использовать WSAT для управления пользователями и ролями на рабочем веб-сайте.However, by changing the connection string in the development environment to point to the production database you can use the WSAT to manage the users and roles on the production website.

Хотя подход WSAT предоставляет быстрый и простой способ управления пользователями и ролями, он требует запуска WSAT из Visual Studio, а также временных изменений данных строки подключения.While the WSAT approach affords a quick and easy way to manage users and roles, it necessitates launching the WSAT from Visual Studio as well as temporary changes to the connection string information. WSAT предлагает быстрый способ управления пользователями и ролями в рабочей среде, но довольно громоздкий и неплохо подходит для веб-сайтов с несколькими администраторами или с администраторами, которые не имеют или не знакомы с Visual Studio и WSAT.The WSAT offers a quick way to manage users and roles on production, but is cumbersome and does not work well for websites with multiple administrators or with administrators who do not have or are not familiar with Visual Studio and the WSAT. По этим причинам большинство веб-сайтов, поддерживающих учетные записи пользователей, включают в себя набор административных веб-страниц.For these reasons, most websites that support user accounts include a set of administrative web pages. Такой набор веб-страниц устраняет потребность в WSAT и используется различными пользователями с любого компьютера.Such a set of web pages eliminates the need for the WSAT and used by various administrative users from any computer.

Поздравляем с программированием!Happy Programming!

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

Дополнительные сведения о разделах, обсуждаемых в этом руководстве, см. в следующих ресурсах:For more information on the topics discussed in this tutorial, refer to the following resources: