具有自定义密码哈希器的 ASP.NET 身份

R34*_*V3r 6 c# asp.net identity asp.net-identity

所以我试图让 ASP.NET 使用自定义的密码哈希器。当我使用以下代码更改哈希器时,注册有效

IPasswordHasher hasher = new CustomPassword();

UserManager.PasswordHasher = hasher;
Run Code Online (Sandbox Code Playgroud)

但在 acountcontroller 中使用以下代码作为登录方法时,登录方法一直说我的凭据不存在

IPasswordHasher hasher = new CustomPassword();

SignInManager.UserManager.PasswordHasher = hasher;
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

小智 0

我有类似的问题,答案并不明显。这是在 .Net6 中完成的,但我相信对于您使用的任何版本都应该是相同的。

您需要确保在调用 AddIdentity 之前添加passwordhasher

builder.Services.AddTransient<IPasswordHasher<ApplicationUser>, PasswordHasherService>();

builder.Services.AddIdentity<ApplicationUser, IdentityRole>()
Run Code Online (Sandbox Code Playgroud)

然后 SigninManager 将使用您定义的密码哈希器而不是默认的密码哈希器。