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


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

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

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

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

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

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

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

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

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

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

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

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

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

Снимок экрана: панель Обозреватель решений с точкой C S контроллера учетной записи, точкой CS моделей учетных записей и файлами в папке /Account/.

Добавление пользователя с правами администратора с помощью сайта конфигурации ASP.NET

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

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

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

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

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

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

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

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

Снимок экрана: окно конфигурации с окном

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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