#asp.net-core #.net-core #signalr #signalr-hub #.net-5
#asp.net-core #.net-ядро #signalr #signalr-hub #.net-5
Вопрос:
Ранее я нормально использовал авторизацию с .NET 5, но внезапно после Context.User.Identity
.NET 5.0.102 в некоторых методах вообще не заполнялся. Больше ничего не изменилось, но некоторые места, где предполагалось использовать идентификационные данные, просто не получили информацию.
Это произошло как в методах контроллера, так и в методах Signalr hub. Почему?
Ответ №1:
Кажется, .NET 5.0.102 изменяет способ обработки авторизации, и я не смог найти это в документации. В моем концентраторе Signalr не был Authorize
установлен атрибут, поэтому OnConnected
методы etc не получили никакой идентификационной информации. То же самое с методами контроллера.
Итак, в каждом отдельном месте, где вам нужна идентификация, должен быть Authorize
установлен атрибут!
Это не работает в методах концентратора, у всего концентратора должен быть атрибут.
Я предполагаю, что это делается для сокращения мест, где доступна идентификационная информация, если вы специально не попросите об этом, но это серьезное изменение, которого я, например, не ожидал.
Обратите внимание, что это документированное поведение: атрибут всегда должен быть там, но по какой-то причине он работал и раньше, и может привести к случаям, когда он не учитывается.