C# 使用asp.net core identity DefaultUI时,如何在成功注册时运行代码?

C# 使用asp.net core identity DefaultUI时,如何在成功注册时运行代码?,c#,asp.net-identity,identityserver4,C#,Asp.net Identity,Identityserver4,我的IdentityServer和Api作为两个独立的应用程序运行。我正在使用,到目前为止一切正常,但我想在我的Api应用程序中创建用户,只要在is中成功注册用户,我就可以在Api项目中使用我的业务逻辑,在is项目中使用身份验证逻辑。然后,每次请求时,我都会将IS用户的子映射到我的Api用户 我的想法是,每当创建新用户时,我都会从is调用Api上的“创建用户”端点,但我不知道如何捕获此事件 我尝试按描述创建自定义事件接收器,但没有注册事件。我还发现了一个在默认ui中创建用户的地方,但这是我所能做

我的IdentityServer和Api作为两个独立的应用程序运行。我正在使用,到目前为止一切正常,但我想在我的Api应用程序中创建用户,只要在is中成功注册用户,我就可以在Api项目中使用我的业务逻辑,在is项目中使用身份验证逻辑。然后,每次请求时,我都会将IS用户的
映射到我的Api用户

我的想法是,每当创建新用户时,我都会从is调用Api上的“创建用户”端点,但我不知道如何捕获此事件

我尝试按描述创建自定义事件接收器,但没有注册事件。我还发现了一个在默认ui中创建用户的地方,但这是我所能做到的


所以我的问题是:如何在Identity server项目中创建用户时运行代码?

正如我所看到的,Asp.Net Identity(不是Identity server)中的
UserManager
不会引发任何要订阅的事件。可能底层
UserStore
有,我还没有检查。无论如何,最简单的两种解决方案可能是,按照建议覆盖用户管理器,并在
公共虚拟异步任务CreateAsync(TUser user)
中覆盖成功调用基后,使用
HttpClient
调用API,或者在您找到的点在UI级别执行相同的操作。通过http使用api调用不能保证您100%成功复制。您必须相应地处理可能的异常,可能使用消息队列,或者。。。只要给用户留一个在你的api中创建的机会,就在他在jwt中出现的时候。@d\f这是一个很好的观点。我想如果我需要在api数据库中创建用户,我可以编写某种中间件来检查每个请求。这样,即使他来自另一家认证提供商,比如谷歌,我仍然可以在我的数据库中为他创建记录。这是一种好方法还是有更好的方法?至少这种“动态”方法在数千家在线商店等的生产中有效。对于企业来说,“复制”方法通常比支持默认标识模式更可取,因为它通常驱动更多数据。但是,据我所知,这不是你的情况,所以。。。这取决于,为什么不:)在“复制方式”下,我指的是使用消息队列、同步框架或类似技术在系统之间发送反向通道消息。很高兴,你们都做完了!:)如我所见,Asp.Net Identity中的
UserManager
(不是Identity server)不会引发任何要订阅的事件。可能底层
UserStore
有,我还没有检查。无论如何,最简单的两种解决方案可能是,按照建议覆盖用户管理器,并在
公共虚拟异步任务CreateAsync(TUser user)
中覆盖成功调用基后,使用
HttpClient
调用API,或者在您找到的点在UI级别执行相同的操作。通过http使用api调用不能保证您100%成功复制。您必须相应地处理可能的异常,可能使用消息队列,或者。。。只要给用户留一个在你的api中创建的机会,就在他在jwt中出现的时候。@d\f这是一个很好的观点。我想如果我需要在api数据库中创建用户,我可以编写某种中间件来检查每个请求。这样,即使他来自另一家认证提供商,比如谷歌,我仍然可以在我的数据库中为他创建记录。这是一种好方法还是有更好的方法?至少这种“动态”方法在数千家在线商店等的生产中有效。对于企业来说,“复制”方法通常比支持默认标识模式更可取,因为它通常驱动更多数据。但是,据我所知,这不是你的情况,所以。。。这取决于,为什么不:)在“复制方式”下,我指的是使用消息队列、同步框架或类似技术在系统之间发送反向通道消息。很高兴,你们都做完了!:)