C# 记录登录日期/时间

C# 记录登录日期/时间,c#,identityserver4,C#,Identityserver4,我们使用IdentityServer 4作为登录服务器,并结合Web API 2.0和Angular 5 我被要求记录用户登录的日期和时间,这似乎并不太不合理。默认情况下,IdentityServer 4不会执行此操作 我认为最明智的做法是将LoginTime列添加到AspNetUsers表中,并将相应的属性添加到ApplicationUser类中,然后我可以在登录过程中设置它。我不能更改实际的登录代码,因为这发生在UserManager类中,但我想我可以添加自己的附加代码,例如在control

我们使用IdentityServer 4作为登录服务器,并结合Web API 2.0和Angular 5

我被要求记录用户登录的日期和时间,这似乎并不太不合理。默认情况下,IdentityServer 4不会执行此操作

我认为最明智的做法是将LoginTime列添加到AspNetUsers表中,并将相应的属性添加到ApplicationUser类中,然后我可以在登录过程中设置它。我不能更改实际的登录代码,因为这发生在
UserManager
类中,但我想我可以添加自己的附加代码,例如在controller方法中,或者它的抽象

但是,我似乎无法捕获登录端点调用。我到处都有断点,没有一个断点被击中,而且似乎没有一个断点的签名与发布的数据相匹配。Chrome中的开发工具告诉我,调用看起来“大致”在正确的位置,但我开始认为端点本身嵌入了API中我无法访问的某个地方

我想这可能是一个配置选项,但如果是这样的话,我无法找到哪一个

在这种情况下,如何扩展登录方法来记录日期和时间?我在网上搜索了如何扩展登录过程,但在任何地方都找不到

这需要在创建身份验证令牌的同时完成。从理论上讲,客户的第二次呼叫可以被绕过,这将是不好的

我打算在这里发布一些代码,因为我知道可能会有人要求它,但它似乎并不相关,因为我无论如何都找不到正确的端点


如何扩展登录端点以保存用户登录的日期和时间?

我认为Identity Server抽象了默认的Asp.Net用户表,因为实现的底层代码非常奇怪。是的,确实如此,但在线文档说,通过向抽象添加属性,您可以扩展
AspNetUsers
,在我的例子中,
ApplicationUser
如果您使用ASP.NET核心标识的默认模板,实际登录过程将使用
SignInManager
(等),而不是
UserManager
SignInManager
实际上只是位于
UserManager
之上,因此您可以实现自己的登录代码并非常轻松地定制流程。您还可以使用中所示的方法,其中在快速启动中引发了一个
UserLoginsAccess事件。您可以处理此事件,也可以将自己的代码内联,具体取决于您的偏好。我的主要问题是没有调用该示例中显示的端点。我在
AccountController
中的所有操作上都有断点,并且在登录期间没有命中任何断点。