powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Авторизация Swashbuckle
11 сообщений из 11, страница 1 из 1
Авторизация Swashbuckle
    #40015828
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В ConfigureServices прописано:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new OpenApiInfo { Title = "blablabla", Version = "v1" });
    c.IncludeXmlComments(xmlPath);

    c.AddSecurityDefinition("Jwt Bearer", new OpenApiSecurityScheme {
        Description = "Standard Authorization header using the Bearer scheme. " +
            "Example: 'Bearer {token}'",

        In = ParameterLocation.Header,
        Name = "Authorization",
        Type = SecuritySchemeType.ApiKey
    });
});


Кнопка "Authorization" в Swagger UI появляется и нормально работает. Но при выполнении запроса header с токеном не добавляется (это видно по строке с командой curl).

Что я еще упустил?
...
Рейтинг: 0 / 0
Авторизация Swashbuckle
    #40015835
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Что я еще упустил?


нет фильтра, ты только определение настроил

почекай эту статейку: https://ppolyzos.com/2017/10/30/add-jwt-bearer-authorization-to-swagger-and-asp-net-core/
...
Рейтинг: 0 / 0
Авторизация Swashbuckle
    #40015881
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

Про фильтр я в курсе. У меня фильтр тоже стоял, но с фильтром было тоже хрен.

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

А ссылка твоя из каменного века, у них там свашбукль еще первой версии, хотя крайняя уже 5.6.3 :))
...
Рейтинг: 0 / 0
Авторизация Swashbuckle
    #40015884
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

У меня вот еще вопрос. Если я помечаю в контроллере акцию как

Код: c#
1.
[ProducesResponseType(StatusCodes.Status400BadRequest)]


то NSwag мне автоматически выдаёт схему ответа в соответствие с RFC7807 и это очень найс, потому что ASP.NET Core при возврате из акции BadRequest() как раз в соответствие с этой схемой HTTP-ответ и формирует.

Но свабакл так не делает (выдаёт только код 400 без схемы ответа). Можно ли его как-то это заставить сделать?
...
Рейтинг: 0 / 0
Авторизация Swashbuckle
    #40015933
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
А ссылка твоя из каменного века, у них там свашбукль еще первой версии, хотя крайняя уже 5.6.3 :))


Да я знаю, важен принцип, он не изменился )
С докой плохо у швабуля, но зато он сам работает хорошо.
...
Рейтинг: 0 / 0
Авторизация Swashbuckle
    #40015934
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
то NSwag мне автоматически выдаёт схему ответа в соответствие с RFC7807 и это очень найс, потому что ASP.NET Core при возврате из акции BadRequest() как раз в соответствие с этой схемой HTTP-ответ и формирует.


Там нет никакой магии, это какой-то коробочный фильтр.. который при чём делает не очень корректные предположения, так как не описано, что ты возвращаешь ProblemDetails.

fkthat
Но свабакл так не делает (выдаёт только код 400 без схемы ответа). Можно ли его как-то это заставить сделать?


..который точно также можно бросить и в швабле.

Только вот исходя из твоего определения типа ответа нет явного описания какого типа ответ будет вовзращён с ошибкой 400. Т.е. швабль здесь делает как раз корректно.

Лучше такие ответы описать в базовом классе контроллера, или через конфиг швабля.
Вариантов масса.
...
Рейтинг: 0 / 0
Авторизация Swashbuckle
    #40015948
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как-то так можно:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
//(базовый класс контроллера)
using...
namespace MyApi.Controllers
{
    [Authorize]
    [Produces("application/json")]
    [Route("api/[controller]")]
    [ResponseCache(Location = ResponseCacheLocation.None, NoStore = true)]
    [ApiController]
    public abstract class MyApiControllerBase : ControllerBase, IMyApiControllerBase
    {
        [NonAction]
        public virtual BadRequestObjectResult BadRequestDetails(string title)
        {
            return HttpContext.BadRequestDetails(new ProblemDetails { Title = title });
        }

        [NonAction]
        public virtual BadRequestObjectResult BadRequestDetails(ProblemDetails details)
        {
            return HttpContext.BadRequestDetails(details);
        }
    }
}

//IMyApiControllerBase
using Microsoft.AspNetCore.Mvc;
namespace MyApi.Controllers
{
    public interface MyIApiControllerBase
    {
        BadRequestObjectResult BadRequestDetails(string title);
    }
}
...
Рейтинг: 0 / 0
Авторизация Swashbuckle
    #40015949
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
очепятка вышла
Код: c#
1.
public interface IMyApiControllerBase
...
Рейтинг: 0 / 0
Авторизация Swashbuckle
    #40015959
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел, в общем.

Код: c#
1.
2.
3.
4.
5.
6.
[ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)]
....
....
    // и возвращать не BadRequest(ModelState), а
    return ValidationProblem(ModelState);
}


И это даже лучше, т.к. и NSwag и Swashbuckle на указание просто 400 возвращают немного отличающуюся от asp.net core схему, а при явном указании типа все четко. (Правда, как заставить свабукла вообще хоть что-то возвращать я так и не нарыл).
...
Рейтинг: 0 / 0
Авторизация Swashbuckle
    #40015962
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One,

Что еще за HttpContext.BadRequestDetails? Даже в 5.0 такого метода нет.

За использование HttpContext без IHttpContextAccessor надо наказывать минимум сутками рефакторинга самого гнусного говнокода
...
Рейтинг: 0 / 0
Авторизация Swashbuckle
    #40015974
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
исправляемся потихоньку, копипастил с одного предыдущего проекта =)
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Авторизация Swashbuckle
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]