В моем приложении Blazor на стороне сервера аутентификация выполняется очень нетрадиционным способом. По сути, когда пользователь заходит на страницу, он проходит аутентификацию, используя свои учетные данные windows. В этот момент создается пользовательская политика для поиска этого имени пользователя во внешней базе данных (Informix), в которой находится авторизация для этого пользователя в приложении. Специально для каждого уровня авторизации в приложении (можно обновить go до этой страницы и т. Д. c.) Я создаю новую заявку для добавления к текущему пользователю на основе разрешений, хранящихся в базе данных.
Обычно в представлении я просто использую AuthenticationStateProvider
, чтобы получить эту информацию, и она работает без проблем. Однако, когда мне нужно получить доступ к пользовательской информации в моих классах обслуживания, которые обрабатывают обновления / бизнес-логи c, я не могу получить доступ к утверждениям / Пользователю вообще. Например, одним из вариантов использования является получение имени пользователя, сохраненного в базе данных для текущей учетной записи Windows, на основе заявки, добавленной во время первоначальной аутентификации, для регистрации их действий / отслеживания. Другой способ - получить полное имя текущего зарегистрированного пользователя из базы данных.
Я пробовал DI в классах обслуживания с поставщиками состояния аутентификации и HTTPContext
, но ни один из них не работает. Я знаю, что общая структура не идеальна, но это то, с чем мне приходится работать. Любая идея о том, как go об этом, будет высоко ценится!