title: What's the user parameter to PasswordHasher's methods used for?
body: <p>In the non-Core version of Identity, <a href="https://msdn.microsoft.com/en-us/library/microsoft.aspnet.identity.passwordhasher(v=vs.108).aspx" rel="nofollow noreferrer">PasswordHasher</a> is a non-generic type. Its <code>HashPassword</code> method takes a single argument (the password to hash), and its <code>VerifyHashedPassword</code> method takes only two (the password hash generated previously by <code>HashPassword</code>, and the provided password to verify. This is great, because it means that I can use <code>PasswordHasher</code> without going all-in and using the whole Identity framework.</p>
  
  <p>In <code>Microsoft.AspNetCore.Identity</code>, on the other hand, <a href="https://docs.microsoft.com/en-gb/dotnet/api/microsoft.aspnetcore.identity.passwordhasher-1?view=aspnetcore-2.0" rel="nofollow noreferrer"><code>PasswordHasher&lt;TUser&gt;</code></a> is now a generic class, and the <code>HashPassword</code> and <code>VerifyHashedPassword</code> methods take a <code>user</code> parameter in addition to the parameters that existed previously. This doesn't make much sense to me. Why does either hashing a password or verifying a hash require the user object? What's it used for?</p>