Я загрузил пример быстрого запуска IdentityServer4 и просматриваю его, чтобы попытаться понять все, что здесь происходит. Что мне удалось сделать до сих пор, так это заменить TestUsers моей собственной реализацией идентификации, которая использует Identity Core + Dapper. Однако некоторые части кода все еще не имеют для меня смысла, и я не могу понять, что они делают. Полный пример кода можно найти здесь: https://github.com /IdentityServer/IdentityServer4.Quickstart.UI/tree/release/Quickstart

Во многих из этих контроллеров я нахожу следующую строку кода:

await _events.RaiseAsync(new UserLoginSuccessEvent(provider, providerUserId, user.Id.ToString(), user.Email));

Теперь UserLoginSuccessEvent является частью библиотеки IdentityServer4.Events, а _events фактически является IEventService. Есть и другие вызовы, такие как UserLogoutSuccessEvent, ConsentDeniedEvent и другие.

Мой вопрос в том, что на самом деле делает вышеперечисленное? Должен ли он запускать какое-то ведение журнала, если да, то где? Могу ли я, возможно, реализовать что-то, что будет вводить здесь и запускать мою собственную вещь, или что-то совершенно другое.

2
Bagzli 10 Ноя 2018 в 19:32

1 ответ

Лучший ответ

Класс DefaultEventService, предоставляемый IdentityServer4, является реализацией IEventService по умолчанию. DefaultEventService использует объект IEventSink для приема сгенерированных событий. (см. его реализацию RaiseAsync). DefaultEventSink, снова являющийся частью IdentityServer4, зарегистрирован как IEventSink. DefaultEventSink сохраняет \ регистрирует события.

Итак, вызывающий код вызывает метод DefaultEventService.RaiseAsync (..), который, в свою очередь, вызывает метод DefaultEventSink.PersistAsync, который регистрирует события.

Вы можете предоставить свою собственную реализацию интерфейса IEventService или IEventSink или обоих.

2
Zia Khan 10 Окт 2019 в 05:45