使用承载身份验证和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
    };

使用承载身份验证和webapi2设置上次登录时间

我认为您可以通过自己实现ApplicationOAuthProvider来实现这一点。

你可以在这里看到你正在使用的源代码。

我确信您可以在GrantResourceOwnerCredentials或TokenEndpoint方法中执行此操作。您必须逐步完成几个请求的代码,以确定执行此操作的最佳位置。然后,您可以像GrantResourceOwnerCredentials方法中那样使用userManager来执行此操作。

我认为另一种方法是实现你自己的用户管理器,这是一种更复杂、更耗时的方法。我不会讨论这个问题,因为我很确定你可以用我上面提到的方法来做。