ASP.NET Web API登录历史记录实现

时间:2014-10-14 06:30:53

标签: login asp.net-web-api oauth-2.0

我已搜索但未找到任何文档,其中概述了记录每次成功或失败尝试获取访问令牌并存储请求的日期/时间和IP的最佳方法。我可以在应用程序中在哪里执行此操作?

1 个答案:

答案 0 :(得分:1)

确定。很奇怪,没有兴趣回答这个问题。

经过一些试验/错误和调试跟踪后,我发现位于典型ASP.NET Web API模板中ApplicationOAuthProvider文件夹中的Providers包含以下内容:

    public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
    {
        var userManager = context.OwinContext.GetUserManager<ApplicationUserManager>();

        ApplicationUser user = await userManager.FindAsync(context.UserName, context.Password);

        //log the authentication attempt here

        if (user == null)
        {
            context.SetError("invalid_grant", "The user name or password is incorrect.");
            return;
        }

        ClaimsIdentity oAuthIdentity = await user.GenerateUserIdentityAsync(userManager,
           OAuthDefaults.AuthenticationType);
        ClaimsIdentity cookiesIdentity = await user.GenerateUserIdentityAsync(userManager,
            CookieAuthenticationDefaults.AuthenticationType);

        AuthenticationProperties properties = CreateProperties(user.UserName);
        AuthenticationTicket ticket = new AuthenticationTicket(oAuthIdentity, properties);
        context.Validated(ticket);
        context.Request.Context.Authentication.SignIn(cookiesIdentity);
    }

我在代码中添加了注释,以显示可以实现日志记录的位置。我希望有所帮助。