使用承载认证和webapi2设置上次登录时间

时间:2014-09-09 07:15:07

标签: c# asp.net-web-api2 bearer-token

我正在使用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
    };

1 个答案:

答案 0 :(得分:2)

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

您可以看到正在使用的here的源代码。

我很确定你可以在GrantResourceOwnerCredentials或TokenEndpoint方法中做到这一点。您将不得不逐步执行代码以确定执行此操作的最佳位置。然后,您可以像使用GrantResourceOwnerCredentials方法中所做的那样使用userManager来执行此操作。

我认为另一种方法是实现自己的用户管理器,这是一种更复杂,更耗时的方法。我不会深入研究,因为我很确定你能用上面提到的方法做到这一点。