Евгений Колесников 2 роки тому
батько
коміт
d124d0fa7f
3 змінених файлів з 49 додано та 2 видалено
  1. 4 2
      articles/api_asp_net_core.md
  2. 40 0
      articles/api_auth.md
  3. 5 0
      readme.md

+ 4 - 2
articles/api_asp_net_core.md

@@ -141,15 +141,17 @@ REST API — самый популярный сегодня стандарт в
 
 ## Open API (Swagger)
 
-**Swagger** - это фреймворк для спецификации *RESTful API*. Его прелесть заключается в том, что он дает возможность не только интерактивно просматривать спецификацию, но и отправлять запросы.
+**OpenApi (Swagger)** - это фреймворк для спецификации *RESTful API*. Его прелесть заключается в том, что он дает возможность не только интерактивно просматривать спецификацию, но и отправлять запросы.
 
 **ASP.NET** поддерживает генерацию спецификации и конечной точки для использования этой спецификации.
 
-Для поддержки Swagger нужно установить NuGet пакеты:
+Для поддержки **Swagger** нужно установить **NuGet** пакеты:
 
 * Microsoft.OpenApi
 * Swashbuckle.AspNetCore
 
+>[Подробнее про OpenApi (Swagger)](https://learn.microsoft.com/ru-ru/aspnet/core/tutorials/web-api-help-pages-using-swagger?view=aspnetcore-7.0)
+
 ## Создание сервера ASP.NET Core.
 
 ### Маршрутизация в ASP.NET

+ 40 - 0
articles/api_auth.md

@@ -253,6 +253,46 @@ Authorization: Basic base64encodedloginandpassword
         .RequireAuthorization();
     ```    
 
+1. Настройка авторизации в **Swagger**
+
+    >Взял [отсюда](https://habr.com/ru/companies/simbirsoft/articles/707108/)
+
+    В **Swagger** можно настроить заполнение логина и пароля, чтобы соответствующий заголовок автоматически добавлялся в запросы. Для этого надо добавить параметры в метод **AddSwaggerGen**:
+
+    ```cs
+    builder.Services.AddSwaggerGen(options =>
+    {
+        // Метод AddSecurityDefinition добавляет
+        // кнопку "Авторизовать" в верхней чести страницы
+        // которая настраивает заголовок авторизации
+        options.AddSecurityDefinition("Basic", new OpenApiSecurityScheme
+        {
+            Description = "Введите логин и пароль",
+            Name = "Authorization",
+            In = ParameterLocation.Header,
+            Type = SecuritySchemeType.Http,
+            Scheme = "Basic"
+        });
+        // Метод AddSecurityRequirement 
+        // добавит заголовок авторизации 
+        // к каждой конечной точке при отправке запроса:
+        options.AddSecurityRequirement(new OpenApiSecurityRequirement
+        {
+            {
+                new OpenApiSecurityScheme
+                {
+                    Reference = new OpenApiReference
+                    {
+                        Type = ReferenceType.SecurityScheme,
+                        Id = "Basic"
+                    }
+                },
+                new List<string>()
+            }
+        });
+    });
+    ```
+
 **Swagger** в этот проект я не прикручивал, вы можете сделать запрос из **Postman**-а или из плагина к VSCode (_REST Client_)
 
 В _REST Client_ запрос выглядит так:

+ 5 - 0
readme.md

@@ -349,6 +349,11 @@ https://office-menu.ru/uroki-sql Уроки SQL
 
 1. [HTTP запросы в C#. Получение списка материалов выбранного продукта](./articles/cs_http.md)
 
+<!-- TODO 
+  авторизация
+  
+-->
+
 <!-- 1. [C# Параллельное программирование и асинхронность](./articles/cs_async_await.md) -->
 
 <!-- 1. [ASP NET Web API (Метанит)](https://metanit.com/sharp/aspnet_webapi/1.1.php)