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