Часть 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 и скопируйте следующие файлы в те же каталоги в нашем проекте:
- Скопируйте файл AccountController.cs в каталог Controllers
- Копирование AccountModels в каталог Models
- Создайте каталог Account в каталоге Views и скопируйте все четыре представления в
Измените пространство имен для классов Controller и Model, чтобы они начинались с MvcMusicStore. Класс AccountController должен использовать пространство имен MvcMusicStore.Controllers, а класс AccountModels — пространство имен MvcMusicStore.Models.
Примечание. Эти файлы также доступны в MvcMusicStore-Assets.zip скачивания, из которого мы скопировали файлы макета сайта в начале руководства. Файлы членства находятся в каталоге Code.
Обновленное решение должно выглядеть следующим образом:
Добавление пользователя с правами администратора с помощью сайта конфигурации ASP.NET
Прежде чем требовать авторизацию на нашем веб-сайте, необходимо создать пользователя с доступом. Самый простой способ создать пользователя — использовать встроенный веб-сайт конфигурации ASP.NET.
Запустите веб-сайт конфигурации ASP.NET, щелкнув значок в Обозреватель решений.
Откроется веб-сайт конфигурации. Откройте вкладку Безопасность на начальном экране, а затем щелкните ссылку "Включить роли" в центре экрана.
Щелкните ссылку "Создание ролей или управление ими".
Введите "Администратор" в качестве имени роли и нажмите кнопку Добавить роль.
Нажмите кнопку Назад, а затем щелкните ссылку Создать пользователя в левой части экрана.
Заполните поля сведений о пользователе слева, используя следующие сведения:
Поле | Значение |
---|---|
Имя пользователя | Администратор |
Пароль | password123! |
Подтвердите пароль | password123! |
Электронная почта | (любой адрес электронной почты будет работать) |
Контрольный вопрос | (что вам нравится) |
Ответ на контрольный вопрос | (что вам нравится) |
Примечание. Конечно, можно использовать любой пароль. Для параметров безопасности паролей по умолчанию требуется пароль длиной 7 символов и содержит один символ, отличный от буквенно-цифрового.
Выберите роль администратора для этого пользователя и нажмите кнопку Создать пользователя.
На этом этапе должно появиться сообщение о том, что пользователь успешно создан.
Теперь можно закрыть окно браузера.
Авторизация на основе ролей
Теперь мы можем ограничить доступ к StoreManagerController с помощью атрибута [Authorize], указав, что пользователь должен иметь роль администратора для доступа к любому действию контроллера в классе.
[Authorize(Roles = "Administrator")]
public class StoreManagerController : Controller
{
// Controller code here
}
Примечание. Атрибут [Authorize] можно поместить в определенные методы действия, а также на уровне класса Controller.
Теперь при переходе к /StoreManager откроется диалоговое окно Вход в систему:
После входа с помощью новой учетной записи администратора мы можем перейти на экран Редактирование альбома, как и раньше.