我已经下载了IdentityServer4 Quickstart示例,并且正在通过它来尝试理解这里发生的一切。到目前为止,我设法将TestUsers替换为我自己的使用Identity Core + Dapper的自定义Identity Implementation。但是,代码的某些部分对我来说仍然没有意义,我无法弄清楚它们的作用。完整的代码示例可以在这里找到: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
等。
我的问题是以上内容实际上是做什么的?是否应该触发某种日志记录,如果在哪里触发?我是否想实施一些可以注入到这里并触发我自己的东西或完全其他东西的东西。
答案 0 :(得分:0)
DefaultEventService类是IEventService的默认实现。 DefaultEventService使用IEventSink对象接收引发的事件。 (请参见其RaiseAsync实现)。 DefaultEventSink,也是IdentityServer4的一部分,被注册为IEventSink。 DefaultEventSink保留\记录事件。
因此,调用者代码调用DefaultEventService.RaiseAsync(..)方法,该方法又调用记录事件的DefaultEventSink.PersistAsync方法。
您可以提供自己的IEventService或IEventSink接口或两者的实现。