我正在使用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
};
答案 0 :(得分:2)
我认为你可以通过自己实现ApplicationOAuthProvider来实现这一点。
您可以看到正在使用的here的源代码。
我很确定你可以在GrantResourceOwnerCredentials或TokenEndpoint方法中做到这一点。您将不得不逐步执行代码以确定执行此操作的最佳位置。然后,您可以像使用GrantResourceOwnerCredentials方法中所做的那样使用userManager来执行此操作。
我认为另一种方法是实现自己的用户管理器,这是一种更复杂,更耗时的方法。我不会深入研究,因为我很确定你能用上面提到的方法做到这一点。