У меня есть веб-API .Net Core с настраиваемой авторизацией на основе политик (политики, которые проверяют утверждения и значения заявлений на JWT).
Мне нужно регистрироваться (в базе данных) каждый раз, когда пользователь вызывает функцию веб-API, даже если авторизация не выполняется (особенно при сбоях).
Для этого я переопределяю эти методы OnActionExecuting
и OnResultExecuted
(потому что я хочу регистрировать каждый запрос в одном фильтре, а в другом фильтре - результат запроса). Но, если авторизация не удалась, оба фильтра никогда не сработали.
Это потому, что фильтр авторизации идет перед другими фильтрами (и, если запрос неавторизован, закоротите конвейер).
Итак, когда пользователь вызывает метод без авторизации, я не могу его зарегистрировать (я использую Serilog для записи файла журнала на сервере и отлично работает при сбое авторизации, но я хочу записать его в базу данных, как при авторизации Это хорошо).
Я пытаюсь написать какой-нибудь фильтр до или после авторизации, но не смог. Может, я не так думаю, а проще.
Я все это читал, но пока не понял:
Пользовательская авторизация на основе политик ASP .NET Core
Авторизация на основе политики Asp.Net заканчивается на 401 Unauthorized < / а>
Как создать настраиваемый атрибут AuthorizeAttribute в ASP. NET Core?
Спасибо!