首页 > 解决方案 > 什么是 Identity Server 4 引发事件

问题描述

我已经下载了 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));

现在UserLoginSuccessEventIdentityServer4.Events图书馆的一部分,_events实际上是IEventService。还有其他调用,例如UserLogoutSuccessEvent,ConsentDeniedEvent等等。

我的问题是上面实际上做了什么?它是否应该触发某种日志记录,如果是这样的话?我想可能会实现一些会在这里注入并触发我自己的东西或完全不同的东西。

标签: c#asp.net-core-mvcidentityserver4

解决方案


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

因此,调用者代码调用 DefaultEventService.RaiseAsync(..) 方法,该方法又调用 DefaultEventSink.PersistAsync 方法来记录事件。

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


推荐阅读