C# 什么是Identity Server 4引发事件

C# 什么是Identity Server 4引发事件,c#,asp.net-core-mvc,identityserver4,C#,Asp.net Core Mvc,Identityserver4,我已经下载了IdentityServer4快速入门示例,我正在通过它来尝试并理解这里发生的一切。到目前为止,我所做的是用我自己的自定义标识实现替换TestUsers,该实现使用Identity Core+Dapper。然而,代码中仍有一些部分对我来说毫无意义,我无法理解它们的作用。完整的代码示例可在此处找到: 在这些控制器中,我发现以下代码行: await _events.RaiseAsync(new UserLoginSuccessEvent(provider, providerUserId,

我已经下载了IdentityServer4快速入门示例,我正在通过它来尝试并理解这里发生的一切。到目前为止,我所做的是用我自己的自定义标识实现替换TestUsers,该实现使用Identity Core+Dapper。然而,代码中仍有一些部分对我来说毫无意义,我无法理解它们的作用。完整的代码示例可在此处找到:

在这些控制器中,我发现以下代码行:

await _events.RaiseAsync(new UserLoginSuccessEvent(provider, providerUserId, user.Id.ToString(), user.Email));
现在,
userloginsaccessevent
IdentityServer4.Events
库的一部分,
\u Events
实际上是
IEventService
。还有其他调用,如
UserLogoutSuccessEvent
approvedinedevent
,等等


我的问题是,上面提到的实际作用是什么?它应该触发某种日志记录吗?如果是,在哪里?我是否应该在这里实现一些注入并触发我自己的东西或完全其他的东西。

DefaultEventService类,由IdentityServer4提供,是IEventService的默认实现。 DefaultEventService使用IEventIK对象接收引发的事件。(参见其RaiseAsync实现)。DefaultEventSink也是IdentityServer4的一部分,注册为IEventSink。DefaultEventSink持续\记录事件

因此,调用方代码调用DefaultEventService.RaiseAsync(..)方法,该方法依次调用记录事件的DefaultEventSink.PersistAsync方法


您可以提供自己的IEventService或IEventSink接口实现,或两者都提供。

完全如您所述:日志记录。IDS中的大多数事件都很重要,因此您有一个事件系统,可以在需要时尽快采取行动。不过,有一个默认实现。我只使用了EF Core的ID,它会记录到database@CamiloTerevinto既然这是日志记录,那么我该如何控制它,在哪里设置它,以便它可以到达我想要的地方。例如我的数据库。与ASP.NET核心中的大多数服务相同。创建自己的类来实现
IEventService
,并将其注册到容器中