title: SigninManager is not calling AccessFailed and Lockout methods
body: <p>I have implemented the user store in a ASP.NET Core 2 MVC application. See my implementation code below. I have set up the options in Startup, and have set <code>lockoutOnFailure: true</code> on the <code>PasswordSignInAsync()</code> method in the AccountController. </p>
  
  <p>For some reason the access failed methods are not being called on the user store. And only the "GetLockoutEnabledAsync()" is being called. </p>
  
  <p>The current implementation works great for regular logins. I can sign in without any problem. But when testing failed logins, I am not sure what I am missing to get it to use the lockout and failed counts correctly.</p>
  
  <pre><code>public class MyUser : IdentityUser&lt;int&gt;
  {
      //...
      //AccessFailedCount, LockoutEnd, and LockoutEnabled are apart of IdentityUser
      //...
  }
  
  public class AccountController : Controller
  {
      public async Task&lt;IActionResult&gt; Login(LoginViewModel model, string returnUrl = null)
      {
          //...
          var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure: true);
          //...
      }
  }
  
  public class Startup
  {
      public void ConfigureServices(IServiceCollection services)
      {
          //...
          services.AddIdentity&lt;MyUser, MyRole&gt;(a =&gt;
          {
              //...
              a.Lockout.AllowedForNewUsers = true;
              a.Lockout.DefaultLockoutTimeSpan = new System.TimeSpan(0, 5, 0);
              a.Lockout.MaxFailedAccessAttempts = 5;
          })
          .AddDefaultTokenProviders()
          .AddSignInManager&lt;SignInManager&lt;MyUser&gt;&gt;()
          .AddUserStore&lt;MyUserStore&gt;()
          .AddRoleStore&lt;MyRoleStore&gt;();
          //...
      }
  }
  
  public class MyUserStore : IUserStore&lt;MyUser&gt;, IUserRoleStore&lt;MyUser&gt;,
      IUserPasswordStore&lt;MyUser&gt;, IUserEmailStore&lt;MyUser&gt;, IUserLockoutStore&lt;MyUser&gt;
  {
      //...
  
      #region IUserLockoutStore interface
  
      public async Task&lt;DateTimeOffset?&gt; GetLockoutEndDateAsync(MyUser user, CancellationToken cancellationToken)
      {
          if (user == null)
          {
              throw new ArgumentException("Cannot get lockout end date. User is null.");
          }
          return user.LockoutEnd;
      }
  
      public async Task SetLockoutEndDateAsync(MyUser user, DateTimeOffset? lockoutEnd, CancellationToken cancellationToken)
      {
          if (user == null)
          {
              throw new ArgumentException("Cannot set lockout end date. User is null.");
          }
  
          user.LockoutEnd = lockoutEnd;
      }
  
      public async Task&lt;int&gt; IncrementAccessFailedCountAsync(MyUser user, CancellationToken cancellationToken)
      {
          if (user == null)
          {
              throw new ArgumentException("Cannot update AccessFailedCount. User is null.");
          }
  
          user.AccessFailedCount += 1;
          return user.AccessFailedCount;
      }
  
      public async Task ResetAccessFailedCountAsync(MyUser user, CancellationToken cancellationToken)
      {
          if (user == null)
          {
              throw new ArgumentException("Cannot update AccessFailedCount. User is null.");
          }
  
          user.AccessFailedCount = 0;
      }
  
      public async Task&lt;int&gt; GetAccessFailedCountAsync(MyUser user, CancellationToken cancellationToken)
      {
          if (user == null)
          {
              throw new ArgumentException("Cannot get AccessFailedCount. User is null.");
          }
          return user.AccessFailedCount;
      }
  
      public async Task&lt;bool&gt; GetLockoutEnabledAsync(MyUser user, CancellationToken cancellationToken)
      {
          if (user == null)
          {
              throw new ArgumentException("Cannot get LockoutEnabled. User is null.");
          }
          return user.LockoutEnabled;
      }
  
      public async Task SetLockoutEnabledAsync(MyUser user, bool enabled, CancellationToken cancellationToken)
      {
          if (user == null)
          {
              throw new ArgumentException("Cannot set LockoutEnabled. User is null.");
          }
  
          user.LockoutEnabled = enabled;
      }
  
      #endregion
  }
  </code></pre>