使用承载身份验证和webapi2设置上次登录时间
本文关键字:设置 登录 时间 webapi2 身份验证 | 更新日期: 2023-09-27 18:21:20
我使用webapi2的承载身份验证来针对我的REST API进行身份验证。我希望能够在用户成功进行身份验证并取回令牌时,在我的用户存储中设置用户上次登录的时间。我该怎么做?成功登录时是否有执行代码的挂钩?
到目前为止,这是我的设置代码。我有自己的IPasswordHasher 实现
UserManagerFactory = () =>
{
var manager = WebApiApplication.NinjectKernel.Get<UserManager<OwinUser>>();
manager.PasswordHasher = WebApiApplication.NinjectKernel.Get<IPasswordHasher>();
return manager;
};
OAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/api/Token"),
Provider = new ApplicationOAuthProvider(PublicClientId, UserManagerFactory),
AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
AccessTokenExpireTimeSpan = TimeSpan.FromHours(14),
AllowInsecureHttp = true
};
我认为您可以通过自己实现ApplicationOAuthProvider来实现这一点。
你可以在这里看到你正在使用的源代码。
我确信您可以在GrantResourceOwnerCredentials或TokenEndpoint方法中执行此操作。您必须逐步完成几个请求的代码,以确定执行此操作的最佳位置。然后,您可以像GrantResourceOwnerCredentials方法中那样使用userManager来执行此操作。
我认为另一种方法是实现你自己的用户管理器,这是一种更复杂、更耗时的方法。我不会讨论这个问题,因为我很确定你可以用我上面提到的方法来做。