PasswordHasher的方法用户参数是什么用的?

时间:2017-10-17 14:58:14

标签: c# asp.net asp.net-core .net-core asp.net-identity

在非Core版本的Identity中,PasswordHasher是非泛型类型。它的HashPassword方法只接受一个参数(哈希的密码),而它的VerifyHashedPassword方法只需要两个(HashPassword之前生成的密码哈希值,以及提供的验证密码。很棒,因为这意味着我可以使用PasswordHasher而无需全押并使用整个Identity框架。

另一方面,在Microsoft.AspNetCore.IdentityPasswordHasher<TUser>现在是一个通用类,HashPasswordVerifyHashedPassword方法另外带有user参数到先前存在的参数。这对我来说没什么意义。为什么散列密码或验证散列需要用户对象?它用于什么?

1 个答案:

答案 0 :(得分:4)

无。我们可以在https://github.com/aspnet/Identity/blob/dev/src/Microsoft.Extensions.Identity.Core/PasswordHasher.cs的源代码中看到,根本没有使用类型参数TUser或类的方法的任何user参数。

我猜想在IPasswordHasher<TUser>接口上使用这些参数的想法是允许的特定于应用程序的子类依赖于用户。例如,我可以想象一种情况,在两个应用程序与不同用户库合并之后,应用程序最终必须处理使用不同算法对其密码进行哈希处理的用户。在用户模型上存储类似PasswordFormat字段的内容将允许自定义IPasswordHasher<TUser>根据用户选择要使用的散列算法。