Василий Банников, уже думает над тем, чтобы собирать на dev компах, публиковать в нужную папку, откуда докер и будет всё тащить, таким образом уже всё нужное будет в 1 месте (в т.ч. нужные dll). Но не знаю, есть ли уже после этого смысл
+1 к тому, что 20-30 проектов - норма, текущий проект на работе буквально сейчас состоит из 26 проектов, но у меня там всего 3 exe, а остальное - dll.
Каждая dll должна отвечать за свое, например у нас это: 1 - общие классы для ответов от API (несколько API отдают одинаковые ответы (по формату т.е.)), exception и прочие штуки, 2- библиотека для авторизации через JWT, общие настройки JWT, пр., 3 - Unit of Work (который сам состоит из 3 проектов) и так далее. Сделано это для того, что бы не тащить ненужное в проекты, нужен сервис генерации рандомной строк (как пример) - добавил 2 библиотеки (в нашем случае 2, потому что есть интерфейс и его реализация в другой библиотеке) и используешь его везде.
Поэтому ваши 20-30 проектов, если сделаны грамотно, то никаких сложностей не доставят, наоборот повышают (ИМХО) гибкость ваших проектов.
Dudder, если честно - не понимаю зачем в нем что-то хранить в целом, время жизни у Refresh'a тоже должно быть время жизни, в базу полезете всё равно, а там можно и связь на таблицу пользователей сделать
Лично у нас сделано так, что Refresh живет независимо от JWT, JWT живет как правило несколько минут, а Refresh может жить хоть год. Поэтому у нас сделано так, что после недели неактивности можно по Refresh'y взять новый JWT и продолжать работать. Refresh'и держим в базе, при попытке обновить JWT по Refresh'y - смотрим в базу и строим новый JWT. Имхо, но нет смысла держать в Refresh'e данные, т.к. за время жизни JWT и Refresh'a могут поменяться данные человека, в т.ч. роли, имя, почта и прочее, иногда эти данные нужны в JWT.
Поэтому вам не обязательно получать никакие данные от пользователя, достаточно сам Refresh token, а по нему в базе посмотреть кто его запрашивает и выдать новый JWT. (ИМХО(!))
Andrei SunnyPh, еще раз говорю, что Middleware только в API. Blazor server отправляет на API http запрос, в middleware API(!!!) нет тела запроса, хотя в контроллере данные есть.
Andrei SunnyPh, слишком много воды, извините. Вы не по теме, я вам про ошибку - а вы мне про паттерн. У меня нет проблем с отправкой запроса. Где формируется запрос? А где он должен формироваться? В обоих случаях со страницы отправляется обычный HTTP запрос, в обоих случаях код одинаковый. Интересует почему при отправке запроса с Blazor Server'a в API нет тела запроса, хотя данные в контроллер попадают полностью. (Middleware только в API, в блазоре его нет)