Dan*_*Dan 5 asp.net-core-mvc asp.net-core identityserver4
我在 Identity Server 4 文档中读到可以像这样打开事件:
services.AddIdentityServer(options =>
{
options.Events.RaiseSuccessEvents = true;
options.Events.RaiseFailureEvents = true;
options.Events.RaiseErrorEvents = true;
});
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但我想知道如何侦听事件发生时的情况,例如“ApiAuthenticationSuccessEvent”。如何侦听 .NET Core Web 应用程序中引发的此事件?我不会将事件持久保存到某个事件存储中,我只需要知道何时引发此类事件,以便我可以检查该事件并使用该信息执行某些操作。
也许我以错误的方式处理这个问题,或者我错过了一些明显的东西!
即使这是一个有点老的问题,我也遇到了同样的问题并通过以下方式解决了。你只需要注册自己的IEventSink实现并实现该方法PersistAsync
public class CustomEventSink : IEventSink
{
public CustomEventSink()
{
}
public Task PersistAsync(Event evt)
{
// Log in the way you want the event
return Task.CompletedTask;
}
}
Run Code Online (Sandbox Code Playgroud)
然后在你的Startup.cs中
// Do this AFTER having added IndentityServer with services.AddIdentityServer
services.AddTransient<IEventSink, CustomEventSink>();
Run Code Online (Sandbox Code Playgroud)
如果您查看 Github 中的 IdentityServer4 DefaultEventSink 类,就会发现它们将引发的事件记录到已注册的记录器中。
| 归档时间: |
|
| 查看次数: |
3706 次 |
| 最近记录: |