Поделиться через


Часть 7. Членство и авторизация

Джон Галлоуэй

Хранилище музыки MVC — это учебное приложение, которое представляет и описывает пошаговые инструкции по использованию ASP.NET MVC и Visual Studio для веб-разработки.

MVC Music Store — это упрощенная реализация магазина, которая продает музыкальные альбомы в Интернете и реализует базовые функции администрирования сайтов, входа пользователей и корзины покупок.

В этой серии учебников подробно описаны все шаги, описанные для создания примера приложения MVC Music Store ASP.NET. Часть 7 охватывает членство и авторизацию.

В настоящее время контроллер диспетчера магазина доступен всем, кто посещает наш сайт. Давайте изменим это, чтобы ограничить разрешение администраторам сайта.

Добавление AccountController и Представлений

Одно различие между полным ASP.NET шаблоном веб-приложения MVC 3 и шаблоном ASP.NET MVC 3 Пустое веб-приложение является то, что пустой шаблон не включает контроллер учетной записи. Мы добавим контроллер учетной записи, скопировав несколько файлов из нового приложения ASP.NET MVC, созданного на основе полного ASP.NET шаблона веб-приложения MVC 3.

Создайте новое приложение ASP.NET MVC с помощью полного ASP.NET шаблона веб-приложения MVC 3 и скопируйте следующие файлы в те же каталоги в нашем проекте:

  1. Скопируйте AccountController.cs в папку Controllers
  2. Скопируйте AccountModels в каталог Models
  3. Создайте каталог Account в каталоге Views и скопируйте в него все четыре представления.

Измените пространство имен для классов контроллера и модели, чтобы они начинались с MvcMusicStore. Класс AccountController должен использовать пространство имен MvcMusicStore.Controllers, а класс AccountModels должен использовать пространство имен MvcMusicStore.Models.

Примечание. Эти файлы также доступны в разделе загрузки MvcMusicStore-Assets.zip, из которого мы скопировали файлы дизайна сайта в начале руководства. Файлы членства находятся в каталоге Code.

Обновленное решение должно выглядеть следующим образом:

снимок экрана панели обозревателя решений с

Добавление администратора на сайте конфигурации ASP.NET

Прежде чем требовать авторизацию на нашем веб-сайте, необходимо создать пользователя с доступом. Самый простой способ создать пользователя — использовать встроенный веб-сайт конфигурации ASP.NET.

Запустите веб-сайт конфигурации ASP.NET, щелкнув значок в обозревателе решений.

снимок экрана окна обозревателя решений с значком глобуса и молотка, выделенным красным прямоугольником.

При этом запускается конфигурационный веб-сайт. Щелкните вкладку "Безопасность" на начальном экране, а затем щелкните ссылку "Включить роли" в центре экрана.

снимок экрана веб-сайта конфигурации с разделом

Щелкните ссылку "Создать или управлять ролями".

снимок экрана веб-сайта конфигурации с разделом

Введите "Администратор" в качестве имени роли и нажмите кнопку "Добавить роль".

снимок экрана: окно конфигурации с администратором в поле

Нажмите кнопку "Назад", а затем щелкните ссылку "Создать пользователя" слева.

снимок экрана веб-сайта конфигурации с разделом

Заполните поля сведений о пользователе слева, используя следующие сведения:

поля значение
имя пользователя Администратор
Пароль
Подтвердите пароль
Электронная почта (любой адрес электронной почты будет работать)
вопрос безопасности (все, что вам нравится)
Ответ на вопрос безопасности (все, что вам нравится)

Примечание:

  • В предыдущей таблице пароль был опущен.
  • Конечно, вы можете использовать любой пароль, который вы хотите. Для параметров безопасности паролей по умолчанию требуется пароль, длиной 7 символов и содержащий один не буквенно-цифровой символ.

Выберите роль администратора для этого пользователя и нажмите кнопку "Создать пользователя".

снимок экрана веб-сайта конфигурации с разделом

На этом этапе появится сообщение, указывающее, что пользователь был успешно создан.

снимок экрана веб-сайта конфигурации с сообщением о завершении создания учетной записи пользователя.

Теперь вы можете закрыть окно браузера.

Авторизация на основе ролей

Теперь можно ограничить доступ к StoreManagerController с помощью атрибута [Авторизовать], указав, что пользователь должен находиться в роли администратора для доступа к любому действию контроллера в классе.

[Authorize(Roles = "Administrator")]
public class StoreManagerController : Controller
{
    // Controller code here
}

Примечание. Атрибут [Авторизовать] можно поместить на определенные методы действий, а также на уровне класса Контроллера.

Теперь при просмотре в /StoreManager откроется диалоговое окно "Вход в систему":

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

После входа с помощью новой учетной записи администратора мы можем перейти на экран редактирования альбома, как и раньше.