Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 706174)
Контекстум

ASP.Net Core в действии (6000,00 руб.)

0   0
Первый авторЛок Эндрю
ИздательствоМ.: ДМК Пресс
Страниц1048
ID809590
АннотацияЭта книга знакомит читателей с основами фреймворка ASP.NET Core, такими как промежуточное ПО, внедрение зависимостей и конфигурация. Автор показывает, как настроить их в соответствии с пользовательскими требованиями. Речь пойдет о том, как добавить аутентификацию и авторизацию в свои приложения, как повысить их безопасность, а также как развертывать их и осуществлять мониторинг. Рассматривается тестирование приложений с использованием модульных и интеграционных тестов. Основное внимание будет уделено тому, как создавать приложения с отрисовкой на стороне сервера, используя страницы Razor и веб-API, а также контроллеры MVC. В третьем издании показано, как создавать веб-приложения для эксплуатации в промышленном окружении с помощью ASP.NET Core 7.0. Вы будете учиться на практических примерах, содержательных иллюстрациях и коде с подробными пояснениями. В числе новинок: создание минимальных API, обеспечение безопасности API с помощью токенов на предъявителя, WebApplicationBuilder и многое другое.
Кому рекомендованоДля новичков в веб-разработке и тем, кто уже имеет опыт использования фреймворка ASP.NET.
ISBN978-5-93700-183-2
УДК004.438.NET
ББК32.973.26-018.2
Лок, Э. . ASP.Net Core в действии / Э. . Лок .— 3-е изд. (эл.) .— Москва : ДМК Пресс, 2025 .— 1048 с. : ил. — ISBN 978-5-93700-183-2 .— URL: https://rucont.ru/efd/809590 (дата обращения: 04.09.2026)

Предпросмотр (выдержки из произведения)

ASP.Net_Core_в_действии_(1).pdf
Стр.5
Стр.8
Стр.9
Стр.10
Стр.11
Стр.12
Стр.13
Стр.14
Стр.15
Стр.16
Стр.17
Стр.18
Стр.19
Стр.20
Стр.21
ASP.Net_Core_в_действии_(1).pdf
УДК 004.438.NET ББК 32.973.26-018.2 Л73 Под редакцией сообщества .NET разработчиков DotNet.Ru Эндрю Лок Л73 ASP.NET Core в действии / пер. с англ. Д. А. Беликова. 3-е изд. – М.: ДМК Пресс, 2025. – 1046 с.: ил. ISBN 978-5-93700-183-2 Эта книга знакомит читателей с основами фреймворка ASP.NET Core, такими как промежуточное ПО, внедрение зависимостей и конфигурация. Автор показывает, как настроить их в соответствии с пользовательскими требованиями. Речь пойдет о том, как добавить аутентификацию и авторизацию в свои приложения, как повысить их безопасность, а также как развертывать их и осуществлять мониторинг. Рассматривается тестирование приложений с использованием модульных и интеграционных тестов. Основное внимание будет уделено тому, как создавать приложения с отрисовкой на стороне сервера, используя страницы Razor и веб-API, а также контроллеры MVC. В третьем издании показано, как создавать веб-приложения для эксплуатации в промышленном окружении с помощью ASP.NET Core 7.0. Вы будете учиться на практических примерах, содержательных иллюстрациях и коде с подробными пояснениями. В числе новинок: создание минимальных API, обеспечение безопасности API с помощью токенов на предъявителя, WebApplicationBuilder и многое другое. Книга подойдет как тем, кто является новичком в веб-разработке, так и тем, кто уже имеет опыт использования фреймворка ASP.NET. УДК 004.438.NET ББК 32.973.26-018.2 Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. ISBN (анг.) 978-1-63343-862-0 ISBN (рус.) 978-5-93700-183-2 © 2023 by Manning Publications Co. © Оформление, издание, перевод, ДМК Пресс, 2024
Стр.5
Оглавление Предисловие от издательства ...............................................................................21 Вступительное слово от сообщества DotNet.Ru .................................................22 Предисловие ............................................................................................................24 Благодарности .........................................................................................................26 Об этой книге ..........................................................................................................28 Об авторе ..................................................................................................................33 Об иллюстрации на обложке .................................................................................33 1.1 Что такое ASP.NET Core?...............................................................................34 1.2 Какие типы приложений можно создавать? ..............................................35 1.3 Выбор ASP.NET Core .....................................................................................36 1.4 Как работает ASP.NET Core? ........................................................................38 1.4.1 Как работает веб­запрос по протоколу HTTP? ..............................38 1.4.2 Как ASP.NET Core обрабатывает запрос? .......................................41 1.5 Что вы узнаете из этой книги ......................................................................42 Резюме ....................................................................................................................43 ЧАСТЬ I. Начало работы с минимальными API ...................... 45 2 Что такое ASP.NET Core .......................................................... 47 2.1 Использование фреймворка для создания веб­приложений ..................47 2.2 Для чего был создан ASP.NET Core ..............................................................48 2.3 Парадигмы ASP.NET Core ............................................................................53 2.4 Когда следует выбрать ASP.NET Core ..........................................................56 2.4.1 Если вы новичок в разработке .NET ................................................57 2.4.2 Если вы .NET­разработчик, создающий новое приложение........59 2.4.3 Перенос существующего ASP.NET­приложения на ASP.NET Core .............................................................................................64 Резюме ....................................................................................................................66 3.1 Краткий обзор приложения ASP.NET Core ................................................68 3.2 Создаем наше первое приложение ASP.NET Core ....................................70 3.2.1 Использование шаблона ...................................................................72 3.2.2 Сборка приложения ............................................................................75 1 Начало работы с ASP.NET Core ............................................... 34 3 Наше первое приложение .......................................................... 67 3.3 Запуск веб­приложения .................................................................................76 3.4 Разбираемся с шаблоном проекта ..............................................................77 3.5 Файл проекта .csproj: объявление зависимостей ......................................79 3.6 Файл Program.cs: определение приложения .............................................81 3.7 Добавляем функциональность в приложение ...........................................84 3.7.1 Добавление и настройка сервисов ..................................................87 3.7.2 Определение способа обработки запросов с помощью промежуточного ПО и конечных точек ....................................................89 Резюме ....................................................................................................................92
Стр.8
8 Оглавление 4 Обработка ошибок с помощью конвейера промежуточного ПО ... 94 4.1 Что такое промежуточное ПО .....................................................................96 4.2 Объединение компонентов в конвейер ...................................................100 4.2.1 Простой сценарий конвейера 1: страница приветствия ............101 4.2.2 Простой сценарий конвейера 2: обработка статических файлов ................................................................104 4.2.3 Простой сценарий конвейера 3: приложение с минимальным API .............................................................108 4.3 Обработка ошибок с помощью промежуточного ПО ............................115 4.3.1 Просмотр исключений в окружении разработки: DeveloperExceptionPage .............................................................................117 4.3.2 Обработка исключений в промышленном окружении: ExceptionHandlerMiddleware ................................................................... 119 Резюме ..................................................................................................................124 5 Создание JSON API с помощью минимальных API .................... 126 5.1 Что такое HTTP API и когда его следует использовать? ........................127 5.2 Определение конечных точек минимальных API ..................................131 5.2.1 Извлечение значений из URL­адреса с помощью маршрутизации ............................................................................................132 5.2.2 Сопоставление HTTP­методов с конечными точками ................133 5.2.3 Определение обработчиков маршрутов с помощью функций... 135 5.3 Генерация ответов с помощью IResult ......................................................138 5.3.1 Возврат кодов состояния с помощью Results и TypedResults .....139 5.3.2 Возврат полезных данных об ошибках с помощью Problem Details .............................................................................................141 5.3.3 Преобразование всех ответов в Problem Details ..........................143 Преобразование исключений в Problem Details ....................................144 Преобразование кодов состояния ошибок в формат Problem Details ........... 146 5.4 Запуск общего кода с фильтрами конечных точек ................................148 5.4.1 Добавление нескольких фильтров к конечной точке .................151 5.4.2 Фильтры или промежуточное ПО: что выбрать? ........................153 5.4.3 Обобщенные фильтры конечных точек ........................................154 5.4.4 Реализация интерфейса IEndpointFilter .......................................157 6 Сопоставление URL-адресов с конечными точками 5.5 Организация API с помощью групп маршрутов ......................................158 Резюме ................................................................................................................. 161 с помощью маршрутизации .................................................... 163 6.1 Что такое маршрутизация? ........................................................................ 164 6.2 Маршрутизация конечных точек в ASP.NET Core ................................. 168 6.3 Изучение синтаксиса шаблона маршрута ................................................172 6.3.1 Работа с параметрами и литеральными сегментами ...................172 6.3.2 Использование необязательных значений и значений по умолчанию...............................................................................................174 6.3.3 Добавление дополнительных ограничений к параметрам маршрута..............................................................................175
Стр.9
Оглавление 9 6.3.4 Сопоставление произвольных URL­адресов с помощью универсального параметра ........................................................................178 6.4 Генерация URL­адресов из параметров маршрута ................................. 179 6.4.1 Генерация URL­адресов для конечной точки минимального API с помощью класса LinkGenerator ...........................180 6.4.2 Генерация URL­адресов с помощью IResults .................................182 6.4.3 Управление созданными URL­адресами с помощью RouteOptions ...........................................................................183 Резюме ..................................................................................................................185 7 Привязка модели и валидация в минимальных API .................. 187 7.1 Извлечение значений из запроса с привязкой модели ..........................188 7.2 Привязка простых типов к запросу .......................................................... 190 7.3 Привязка сложных типов к телу запроса в формате JSON ................... 195 7.4 Массивы: простые типы или сложные? ................................................... 197 7.5 Делаем параметры необязательными с помощью типов, допускающих значение NULL ..........................................................................200 7.6 Привязка сервисов и специальных типов ................................................203 7.6.1 Внедрение хорошо известных типов .............................................203 7.6.2 Внедрение сервисов .........................................................................204 7.6.3 Привязка загрузки файлов с помощью IFormFile и IFormFileCollection ..................................................................................205 7.7 Собственная привязка с помощью BindAsync .........................................207 7.8 Выбор источника привязки ........................................................................208 7.9 Упрощение обработчиков с помощью AsParameters ............................. 209 7.10 Обработка пользовательского ввода с помощью валидации модели ..... 211 7.10.1 Необходимость валидации модели ..............................................211 7.10.2 Использование атрибутов DataAnnotations для валидации .....212 7.10.3 Добавление фильтра валидации в минимальные API ...............215 Резюме ..................................................................................................................218 ЧАСТЬ II. Создание полноценных приложений ....................221 8 Введение во внедрение зависимостей ....................................... 223 8.1 Преимущества внедрения зависимостей .................................................224 8.2 Создание слабосвязанного кода .................................................................231 8.3 Использование внедрения зависимостей в ASP.NET Core ...................233 8.4 Добавление сервисов ASP.NET Core в контейнер ...................................235 8.5 Использование сервисов из контейнера внедрения зависимостей ....238 Резюме ..................................................................................................................240 9 Регистрация сервисов с помощью внедрения зависимостей ...... 242 9.1 Регистрация собственных сервисов в контейнере внедрения зависимостей .......................................................................................................243 9.2 Регистрация сервисов с использованием объектов и лямбда­функций ...............................................................................................247 9.3 Многократная регистрация сервиса в контейнере ................................251 9.3.1 Внедрение нескольких реализаций интерфейса ........................252
Стр.10
10 Оглавление 9.3.2 Внедрение одной реализации при регистрации нескольких сервисов .................................................................................254 9.3.3 Условная регистрация сервисов с помощью TryAdd ...................254 9.4 Жизненный цикл: когда создаются сервисы? ..........................................255 9.4.1 Transient: уникален каждый ............................................................258 9.4.2 Scoped: держимся вместе ................................................................ 259 9.4.3 Singleton: может быть только один .............................................. 260 9.4.4 Следите за захваченными зависимостями .................................. 262 9.5 Разрешение сервисов с жизненным циклом scoped за пределами запроса ......................................................................................... 265 Резюме ................................................................................................................. 267 10 Конфигурирование приложения ASP. Net Core ......................269 10.1 Представляем модель конфигурации ASP.NET Core ............................270 10.2 Создание объекта конфигурации для приложения ..............................272 10.2.1 Добавление поставщика конфигурации в файле Program.cs ..... 275 10.2.2 Использование нескольких поставщиков для переопределения значений конфигурации .....................................278 10.2.3 Безопасное хранение секретов конфигурации ..........................280 Сохранение секретов в переменных окружения в промышленном окружении ...........................................................................................................281 Хранение секретов с помощью менеджера User Secrets в окружении разработки ....................................................................................282 10.2.4 Перезагрузка значений конфигурации при их изменении ......284 10.3 Использование строго типизированных настроек с паттерном «Параметры» ................................................................................ 286 10.3.1 Знакомство с интерфейсом IOptions ...........................................288 10.3.2 Перезагрузка строго типизированных параметров с помощью IOptionsSnapshot.................................................................... 289 10.3.3 Разработка классов параметров для автоматической привязки ................................................................. 291 10.3.4 Привязка строго типизированных параметров без интерфейса IOptions ............................................................................293 10.4 Настройка приложения для нескольких окружений .......................... 295 10.4.1 Определение окружения размещения ........................................ 296 10.4.2 Загрузка файлов конфигурации для конкретного окружения ... 297 10.4.3 Задаем окружение размещения.................................................... 299 Резюме ..................................................................................................................303 11 Документирование API с помощью OpenAPI .........................306 11.1 Добавление описания OpenAPI в приложение .....................................307 11.2 Тестирование API с помощью Swagger UI ..............................................310 11.3 Добавление метаданных в минимальные API........................................312 11.4 Создание строго типизированных клиентов с помощью NSwag .......315 11.4.1 Генерация клиента с помощью Visual Studio...............................316 11.4.2 Создание клиента с помощью инструмента .NET Global .........320 11.4.3 Использование сгенерированного клиента для вызова API ..... 322 11.4.4 Настройка сгенерированного кода ..............................................323 11.4.5 Обновление описания OpenAPI ..................................................326
Стр.11
Оглавление 11 11.5 Добавление описаний и сводок в конечные точки ..............................327 11.5.1 Использование текучих методов для добавления описаний .... 328 11.5.2 Использование атрибутов для добавления метаданных ...........330 11.6 Ограничения OpenAPI ...............................................................................334 11.6.1 Не все API можно описать, используя OpenAPI ........................334 11.6.2 Сгенерированный код чрезмерно категоричен ........................335 11.6.3 Инструменты часто отстают от спецификации .........................336 Резюме ..................................................................................................................337 12 Сохранение данных с Entity Framework Core ........................... 340 12.2 Добавляем EF Core в приложение ...........................................................348 12.2.1 Выбор провайдера базы данных и установка EF Core ...............350 12.2.2 Создание модели данных ..............................................................351 12.2.3 Регистрация контекста данных ....................................................354 12.1 Знакомство с Entity Framework Core .......................................................342 12.1.1 Что такое EF Core? ..........................................................................342 12.1.2 Зачем использовать инструмент объектно­реляционного отображения?...............................................................................................344 12.1.3 Когда следует выбирать EF Core? .................................................345 12.1.4 Отображение базы данных в код приложения ..........................346 12.3 Управление изменениями с помощью миграций ..................................355 12.3.1 Создаем первую миграцию ...........................................................356 12.3.2 Добавляем вторую миграцию .......................................................359 12.4 Выполнение запроса к базе данных и сохранение в ней данных ......362 12.4.1 Создание записи .............................................................................363 12.4.2 Загрузка списка записей .................................................................365 12.4.3 Загрузка отдельной записи ..........................................................367 12.4.4 Обновление модели с изменениями ........................................... 369 12.5 Использование EF Core в промышленных приложениях ...................373 Резюме ..................................................................................................................375 ЧАСТЬ III. Генерация HTML-кода с помощью Razor Pages и MVC .....................................................................377 13 Создание сайта с помощью Razor Pages ................................. 379 13.1 Наше первое приложение Razor Pages ...................................................380 13.1.1 Использование шаблона «Веб­приложение» ..............................380 13.1.2 Добавление и настройка сервисов ...............................................384 13.1.3 Создание HTML с помощью Razor Pages .....................................386 13.1.4 Логика обработки запросов с помощью моделей страницы и обработчиков ............................................................................................388 13.2 Изучение типичной страницы Razor ......................................................390 13.3 Паттерн проектирования MVC ................................................................393 13.4 Применение паттерна проектирования MVC к Razor Pages ...............395 13.4.1 Направление запроса на страницу Razor и создание модели привязки .........................................................................................397 13.4.2 Выполнение обработчика с использованием модели приложения ................................................................................................ 399 13.4.3 Генерация HTML­кода с использованием модели представления .... 400 13.4.4 Собираем все вместе: полный запрос страницы Razor .............401 Резюме ..................................................................................................................403
Стр.12
12 Оглавление 14 Сопоставление URL-адресов с Razor Pages с использованием маршрутизации ................................................................... 405 14.1 Маршрутизация в ASP.NET Core ............................................................. 406 14.2 Маршрутизация на основе соглашений и явная маршрутизация.......407 14.3 Маршрутизация запросов в Razor Pages .................................................410 14.4 Настройка шаблонов маршрутов страницы Razor ...............................412 14.4.1 Добавление сегмента в шаблон маршрута ..................................413 14.4.2 Полная замена шаблона маршрута ...............................................414 14.5 Генерация URL­адресов для страниц Razor............................................415 14.5.1 Генерация URL­адресов для страницы Razor ..............................415 14.5.2 Генерация URL­адресов для контроллера MVC ......................... 416 14.5.3 Генерация URL­адресов с помощью класса LinkGenerator .......418 15 Создание ответов с помощью обработчиков страниц 14.6 Настройка соглашений с помощью Razor Pages ................................... 419 Резюме ..................................................................................................................425 в Razor Pages ......................................................................... 427 15.1 Razor Pages и обработчики страниц ........................................................428 15.2 Выбор обработчика страницы для вызова ............................................ 429 15.3 Прием параметров в обработчиках страниц .........................................432 15.4 Возврат ответов IActionResult ..................................................................434 15.4.1 PageResult и RedirectToPageResult ................................................436 15.4.2 NotFoundResult и StatusCodeResult ..............................................436 15.5 Обработка кодов состояния с помощью StatusCodePagesMiddleware ...............................................................................438 Резюме ..................................................................................................................443 16 Привязка и валидация запросов с помощью Razor Pages ......... 445 16.1 Модели в Razor Pages и MVC ................................................................... 446 16.2 От запроса к модели: делаем запрос полезным .................................... 449 16.2.1 Связывание простых типов ..........................................................454 16.2.2 Связывание сложных типов ..........................................................457 Упрощение параметров метода привязкой к сложным объектам ..............458 Привязка коллекций и словарей ..................................................................... 459 Привязка загрузки файлов с помощью IFormFile ........................................ 461 16.2.3 Выбор источника привязки ......................................................... 461 16.3 Валидация моделей привязки ................................................................. 464 16.3.1 Валидация в Razor Pages ................................................................ 464 16.3.2 Валидация на сервере в целях безопасности ............................. 466 16.3.3 Валидация на стороне клиента для улучшения пользовательского опыта ..........................................................................470 16.4 Организация моделей привязки в Razor Pages ......................................471 Резюме ..................................................................................................................474 17 Отрисовка HTML-кода с использованием представлений Razor ............................................................ 476 17.1 Представления: отрисовка пользовательского интерфейса ..............478
Стр.13
Оглавление 13 17.2 Создание представлений Razor ................................................................482 17.2.1 Представления Razor и сопутствующий код ..............................482 17.2.2 Знакомство с шаблонами Razor.....................................................483 17.2.3 Передача данных в представления ..............................................485 17.3 Создание динамических веб­страниц с помощью Razor ......................488 17.3.1 Использование кода C# в шаблонах Razor ................................. 489 17.3.2 Добавление циклов и условий в шаблоны Razor ....................... 490 17.3.3 Отрисовка HTML­кода с помощью метода Raw .........................493 17.4 Макеты, частичные представления и _ViewStart ................................. 495 17.4.1 Использование макетов для общей разметки ........................... 496 17.4.2 Переопределение родительских макетов с помощью секций .... 499 17.4.3 Использование частичных представлений для инкапсуляции разметки ......................................................................501 17.4.4 Выполнение кода в каждом представлении с помощью _ViewStart и _ViewImports......................................................504 Импорт общих директив с помощью _ViewImports .....................................504 Выполнение кода для каждого представления с помощью _ViewStart ....505 Резюме ................................................................................................................. 506 18 Создание форм с помощью тег-хелперов ................................. 508 18.1 Редакторы кода и тег­хелперы .................................................................510 18.2 Создание форм с помощью тег­хелперов ..............................................513 18.2.1 Тег­хелпер формы ...........................................................................518 18.2.2 Тег­хелпер метки ............................................................................ 519 18.2.3 Тег­хелперы текстового ввода .......................................................521 18.2.4 Тег­хелпер раскрывающегося списка ...........................................525 18.2.5 Тег­хелперы сообщений валидации и сводок валидации .........531 18.3 Создание ссылок с помощью тег­хелпера привязки ссылки .............534 18.4 Сброс кеша с помощью тег­хелпера добавления версии ....................535 18.5 Использование условной разметки с помощью тег­хелпера окружения .......................................................................................537 Резюме ..................................................................................................................538 19 Создание сайта с использованием контроллеров MVC ........... 541 19.1 Razor Pages и MVC в ASP.NET Core ..........................................................542 19.2 Наше первое веб­приложение MVC .......................................................543 19.3 Сравнение контроллера MVC с PageModel из Razor Page ...................547 19.4 Выбор представления из контроллера MVC ........................................ 549 19.5 Выбор между Razor Pages и контроллерами MVC ................................ 556 19.5.1 Преимущества Razor Page ............................................................. 556 19.5.2 Когда выбирать контроллеры MVC вместо Razor Pages .......... 559 Резюме ................................................................................................................. 561 20 Создание HTTP API с использованием контроллеров веб-API ..... 562 20.1 Создание первого проекта веб­API ..........................................................563 20.2 Применение паттерна проектирования MVC к веб­API ......................570 20.3 Маршрутизация на основе атрибутов: связывание методов действий с URL­адресами ..................................................................................574
Стр.14
14 Оглавление 20.3.1 Сочетание атрибутов маршрута для следования принципу DRY ....576 20.3.2 Использование замены маркера для уменьшения дублирования при маршрутизации на основе атрибутов .....................578 20.3.3 Обработка HTTP­методов с помощью маршрутизации на основе атрибутов ................................................................................... 579 20.4 Использование общепринятых соглашений с атрибутом [ApiController] .....................................................................................................580 20.5 Генерация ответа от модели .....................................................................583 20.5.1 Настройка форматеров по умолчанию: добавляем поддержку XML ....................................................................... 586 20.5.2 Выбор формата ответа с помощью согласования типа содержимого .......................................................................................587 20.6 Контроллеры веб­API и минимальные API: что выбрать? .................. 589 Резюме ................................................................................................................. 592 21 Конвейер фильтров MVC и Razor Pages ................................. 595 21.1 Что такое конвейер фильтров MVC ....................................................... 596 21.2 Конвейер фильтров Razor Pages ............................................................. 599 21.3 Фильтры или промежуточное ПО: что выбрать? ....................................... 601 21.4 Создание простого фильтра .................................................................... 602 21.5 Добавляем фильтры к действиям и страницам Razor Pages ............... 605 21.6 Порядок выполнения фильтров ............................................................. 608 21.6.1 Порядок выполнения фильтров по умолчанию ........................ 608 21.6.2 Переопределение порядка выполнения фильтров по умолчанию с помощью интерфейса IOrderedFilter ........................ 609 Резюме ................................................................................................................. 610 22 Создание собственных фильтров MVC и страниц Razor ........ 612 22.1 Создание собственных фильтров для приложения ..............................613 22.1.1 Фильтры авторизации: защита API ............................................. 616 22.1.2 Фильтры ресурсов: прерывание выполнения методов действий ....................................................................................... 617 22.1.3 Фильтры действий: настройка привязки модели и результатов действий ............................................................................. 619 22.1.4 Фильтры исключений: собственная обработка исключений для методов действий ......................................................... 625 22.1.5 Фильтры результатов: настройка результатов действий перед их выполнением .............................................................................. 627 22.1.6 Фильтры страниц: настройка привязки модели для Razor Pages ............................................................................................ 629 22.2 Прерывание выполнения конвейера ......................................................631 22.3 Использование внедрения зависимостей с атрибутами фильтра ......634 Резюме ..................................................................................................................637 ЧАСТЬ IV. Защита и развертывание приложений .................639 с23 Аутентификация: добавление пользователей в приложение помощью ASP.NET Core Identity.................................................... 641
Стр.15
Оглавление 15 23.1 Знакомство с аутентификацией и авторизацией ..................................643 23.1.1 Пользователи и утверждения в ASP.NET Core ............................643 23.1.2 Аутентификация в ASP.NET Core: сервисы и промежуточное ПО ................................................................................ 644 Вход в приложение ASP.NET Core ................................................................... 645 Аутентификация пользователей для последующих запросов .................... 646 23.2 Что такое ASP.NET Core Identity? ........................................................... 649 23.3 Создание проекта, в котором используется ASP.NET Core Identity .... 652 23.3.1 Создание проекта из шаблона ...................................................... 652 23.3.2 Изучение шаблона в Обозревателе решений ........................... 654 23.3.3 Модель данных ASP.NET Core Identity ........................................ 658 23.3.4 Взаимодействие с ASP.NET Core Identity ................................... 660 23.4 Добавляем ASP.NET Core Identity в существующий проект ................ 663 23.4.1 Настройка сервисов ASP.NET Core Identity и промежуточного ПО .............................................................................. 664 23.4.2 Обновление модели данных EF Core для поддержки Identity ... 665 23.4.3 Обновление представлений Razor для связи с пользовательским интерфейсом Identity ........................................... 666 23.5 Настройка страницы по умолчанию в пользовательском интерфейсе ASP.NET Core Identity .................................................................. 668 23.6 Управление пользователями: добавление специальных данных для пользователей ............................................................................... 672 Резюме ................................................................................................................. 674 24 Авторизация: обеспечиваем защиту приложения ................. 677 24.1 Знакомство с авторизацией ..................................................................... 679 24.2 Авторизация в ASP.NET Core .................................................................. 682 24.2.1 Предотвращение доступа анонимных пользователей к приложению ..............................................................................................683 24.2.2 Обработка запросов, не прошедших аутентификацию ........... 685 24.3 Использование политик для авторизации на основе утверждений ... 689 24.4 Создание пользовательских политик авторизации ............................. 692 24.4.1 Требования и обработчики: строительные блоки политики .... 693 24.4.2 Создание политики со специальным требованием и обработчиком .......................................................................................... 694 Создание IAuthorizationRequirement для представления требования ..... 694 Создание политики с несколькими требованиями ...................................... 695 Создаем обработчики авторизации, чтобы отвечать требованиям .......... 696 24.5 Управление доступом с авторизацией на основе ресурсов .................700 24.5.1 Ручная авторизация запросов с помощью IAuthorizationService ...................................................................................702 24.5.2 Создание обработчика AuthorizationHandler на основе ресурсов ......................................................................................705 24.6 Скрытие HTML­элементов от неавторизованных пользователей ....708 Резюме ..................................................................................................................711 25 Аутентификация и авторизация для API ............................ 713 25.1 Аутентификация для API и распределенных приложений ................714 25.1.1 Распространение аутентификации на несколько приложений ....714
Стр.16
16 Оглавление 25.1.2 Централизация аутентификации в поставщике идентификационной информации ........................................................ 716 25.1.3 OpenID Connect и OAuth 2.0 ........................................................ 719 25.2 Аутентификация с токеном на предъявителя .......................................722 25.3 Добавление аутентификации на основе JWT­токенов на предъявителя в минимальные API ............................................................ 729 25.4 Использование инструмента user­jwts для локального тестирования JWT­токенов ...............................................................................731 25.4.1 Создание JWT­токенов с помощью инструмента user­jwts ........732 25.4.2 Настройка JWT­токенов .................................................................734 25.4.3 Управление локальными JWT .......................................................735 25.5 Описание требований к аутентификации для OpenAPI .....................736 25.6 Применение политик авторизации к конечным точкам минимальных API .................................................................................740 Резюме ..................................................................................................................744 26 Мониторинг и устранение ошибок с помощью журналирования .................................................................. 747 26.1 Эффективное использование журналирования в промышленном приложении ........................................................................ 749 26.1.1 Выявление проблем с помощью специальных сообщений журнала ....................................................................................750 26.1.2 Абстракции журналирования ASP.NET Core .............................752 26.2 Добавление сообщений журнала в ваше приложение .........................753 26.2.1 Уровень сообщения журнала: насколько важно сообщение журнала? ...................................................................................757 26.2.2 Категория журнала: какой компонент создал журнал? ............ 759 26.2.3 Форматирование сообщений и сбор значений параметров ... 760 26.3 Контроль места записи журналов с помощью поставщиков журналирования ........................................................................ 762 26.4 Изменение избыточности сообщений журналов с помощью фильтрации .................................................................................... 766 26.5 Структурное журналирование: создание полезных сообщений журналов с возможностью поиска ..............................................771 26.5.1 Добавление поставщика структурного журналирования в приложение ..............................................................................................773 26.5.2 Использование областей журналирования для добавления дополнительных свойств в сообщения журнала ................................... 776 Резюме ..................................................................................................................778 27 Публикация и развертывание приложения ........................... 780 27.1 Что такое модель хостинга ASP.NET Core ..............................................781 27.1.1 Запуск и публикация приложения ASP.NET Core .......................784 27.1.2 Выбор метода развертывания для приложения.........................788 27.2 Публикация приложения в IIS ................................................................ 790 27.2.1 Конфигурирование IIS для ASP.NET Core .................................. 790 27.2.2 Подготовка и публикация приложения в IIS ............................. 792 27.3 Размещение приложения в Linux ........................................................... 795
Стр.17
Оглавление 17 27.3.1 Запуск приложения ASP.NET Core за обратным прокси­сервером в Linux .......................................................................... 795 27.3.2 Подготовка приложения к развертыванию в Linux ................. 798 27.4 Настройка URL­адресов приложения ....................................................800 Резюме ..................................................................................................................804 28 Добавляем протокол HTTPS в приложение ........................... 805 28.1 Для чего нужен протокол HTTPS?.......................................................... 806 28.2 Использование HTTPS­сертификатов для разработки .......................810 28.3 Настройка Kestrel для использования сертификата HTTPS в промышленном окружении ...........................................................................813 28.4 Делаем так, чтобы протокол HTTPS использовался для всего приложения ........................................................................................815 28.4.1 Принудительное использование протокола HTTPS с помощью заголовков HTTP Strict Transport Security ......................... 816 28.4.2 Переадресация с HTTP на HTTPS с помощью компонента HttpsRedirectionMiddleware ................................................820 28.4.3 Отклонение HTTP­запросов в приложениях API ......................823 Резюме ..................................................................................................................824 29 Повышаем безопасность приложения ................................... 826 29.1 Защита от межсайтового скриптинга .....................................................827 29.2 Защита от межсайтовой подделки запросов (CSRF) ...........................831 29.3 Вызов веб­API из других доменов с помощью CORS ............................837 29.3.1 Что такое CORS и как он работает ..............................................838 29.3.2 Добавление глобальной политики CORS ко всему приложению .................................................................................840 29.3.3 Добавление CORS к определенным конечным точкам с помощью метаданных EnableCors .........................................................842 29.3.4 Настройка политик CORS .............................................................844 29.4 Изучение других векторов атак .............................................................. 846 29.4.1 Обнаружение и предотвращение атак с открытым перенаправлением .................................................................................... 846 29.4.2 Предотвращение атак с использованием внедрения SQL­кода с помощью EF Core и параметризации ..................................848 29.4.3 Предотвращение небезопасных прямых ссылок на объекты ..... 850 29.4.4 Защита паролей и данных пользователей ...................................851 Резюме ..................................................................................................................853 ЧАСТЬ V. Дальнейшая работа с ASP.NET Core .......................855 30 Создание приложений ASP.NET Core с помощью обобщенного хоста и класса Startup ....................................... 857 30.1 Разделение ответственностей между двумя файлами ..........................858 30.2 Класс Program: сборка веб­хоста ............................................................. 859 30.3 Класс Startup: настройка приложения ................................................... 861 30.4 Создание собственного экземпляра IHostBuilder ............................... 866 30.5 Сложность обобщенного хоста .............................................................. 869
Стр.18
18 Оглавление 30.6 Выбор между обобщенным хостом и минимальным хостингом ........872 Резюме ..................................................................................................................874 31 Расширенная настройка ASP.NET Core ................................. 877 31.1 Настройка конвейера промежуточного ПО ..........................................878 31.1.1 Создание простых приложений с помощью метода расширения Run .......................................................................... 879 31.1.2 Ветвление конвейера с помощью метода расширения Map ....881 31.1.3 Добавление в конвейер с помощью метода расширения Use .... 885 31.1.4 Создание пользовательского компонента промежуточного программного обеспечения ......................................................................888 31.1.5 Преобразование промежуточного ПО в конечные точки ...... 892 31.2 Использование внедрения зависимостей с OptionsBuilder и IConfigureOptions .......................................................................................... 896 31.3 Использование стороннего контейнера внедрения зависимостей ... 902 Резюме ................................................................................................................. 905 32 Создание собственных компонентов MVC и Razor Pages ......... 907 32.1 Создание собственного тег­хелпера Razor ............................................ 908 32.1.1 Вывод информации об окружении с помощью собственного тег­хелпера ......................................................................... 909 32.1.2 Создание специального тег­хелпера для условного скрытия элементов .....................................................................................913 32.1.3 Создание тег­хелпера для преобразования Markdown в HTML .....915 32.2 Компоненты представления: добавление логики в частичные представления .................................................................................................... 917 32.3 Создание собственного атрибута валидации.........................................923 32.4 Замена фреймворка валидации на FluentValidation ............................ 928 32.4.1 Сравнение FluentValidation и атрибутов DataAnnotations ...... 929 32.4.2 Добавляем FluentValidation в приложение .................................933 Резюме ..................................................................................................................934 33 Вызов удаленных API с помощью IHttpClientFactory .................937 33.1 Вызов API по протоколу HTTP: проблема с классом HttpClient .......938 33.2 Создание экземпляров класса HttpClient с помощью интерфейса IHttpClientFactory ........................................................................ 944 33.2.1 Использование IHttpClientFactory для управления жизненным циклом HttpClientHandler .................................................. 944 33.2.2 Настройка именованных клиентов во время регистрации ..... 948 33.2.3 Использование типизированных клиентов для инкапсуляции HTTP­вызовов ............................................................ 949 33.3 Обработка временных ошибок HTTP с помощью библиотеки Polly .... 952 33.4 Создание специального обработчика HttpMessageHandler ............... 955 Резюме ................................................................................................................. 958 34 Создание фоновых задач и сервисов .........................................960 34.1 Запуск фоновых задач с помощью IHostedService ............................... 961 34.1.1 Запуск фоновых задач по таймеру .............................................. 962
Стр.19
Оглавление 19 34.1.2 Использование сервисов с жизненным циклом Scoped в фоновых задачах ....................................................................... 967 34.2 Создание сервисов рабочей роли без пользовательского интерфейса с использованием IHost .............................................................. 969 34.2.1 Создание сервиса рабочей роли из шаблона ............................. 971 34.2.2 Запуск сервисов рабочей роли в промышленном окружении ................................................................... 974 34.3 Координация фоновых задач с помощью Quartz.NET........................ 977 34.3.1 Установка Quartz.NET в приложение ASP.NET Core ................ 978 34.3.2 Настройка задания для запуска по расписанию с помощью Quartz.NET ............................................................................. 980 34.3.3 Использование кластеризации для повышения избыточности фоновых задач...................................................................983 Резюме ................................................................................................................. 987 35 Тестирование приложений с помощью xUnit .......................... 989 35.1 Тестирование в ASP.NET Core ................................................................. 990 35.2 Создание первого тестового проекта с xUnit ....................................... 992 35.3 Запуск тестов командой dotnet test ......................................................... 995 35.4 Ссылка на ваше приложение из тестового проекта ........................... 996 35.5 Добавление модульных тестов с атрибутами Fact и Theory ............... 999 35.6 Тестирование условий сбоя ................................................................... 1003 Резюме ............................................................................................................... 1004 36 Тестирование приложений ASP.NET Core ............................1006 36.1 Модульное тестирование пользовательского промежуточного ПО........................................................................................ 1007 36.2 Модульное тестирование контроллеров API и конечных точек минимальных API .................................................................................. 1010 36.3 Интеграционное тестирование: тестирование всего приложения в памяти ...................................................................................... 1015 36.3.1 Создание TestServer с помощью пакета Test Host .................... 1016 36.3.2 Тестирование приложения с помощью WebApplicationFactory ............................................................................ 1019 36.3.3 Замена зависимостей в классе WebApplicationFactory .......... 1022 36.3.4 Уменьшение дублирования кода за счет создания своего класса WebApplicationFactory ................................................................. 1024 36.4 Изоляция базы данных с помощью поставщика EF Core в памяти .... 1026 Резюме ............................................................................................................... 1031 Приложение А. Подготовка окружения разработки .....................1033 А.1 Установка .NET SDK ................................................................................ 1034 А.2 Выбор интегрированной среды разработки или редактора кода .......................................................................................... 1035 А.2.1 Visual Studio (Windows) ................................................................. 1036 А.2.2 Rider от компании JetBrains (Windows, Linux, macOS) ........... 1037 А.2.3 Visual Studio для Mac (macOS) ..................................................... 1038 А.2.4 Visual Studio Code (Windows, Linux, macOS) ............................ 1038
Стр.20
20 Оглавление Приложение Б. Полезные ссылки ..................................................1040 Б.1 Список литературы .................................................................................. 1040 Б.2 Анонсы в блогах ........................................................................................ 1041 Б.3 Документация Microsoft .......................................................................... 1042 Б.4 Ссылки по темам, связанным с безопасностью ................................... 1042 Б.5 Репозитории ASP.NET Core на GitHub .................................................. 1043 Б.6 Инструменты и сервисы ......................................................................... 1043 Б.7 Блоги ASP.NET Core .................................................................................. 1043 Б.8 Ссылки на видео ........................................................................................ 1044
Стр.21

Облако ключевых слов *


* - вычисляется автоматически