ASP.NET Identity与自定义密码哈希器

5

我正在尝试让asp.net与自定义密码哈希器一起使用。当我使用以下代码更改哈希器时,注册功能可以正常运行:

IPasswordHasher hasher = new CustomPassword();

UserManager.PasswordHasher = hasher;

但是,当我使用以下代码作为账户控制器中的登录方法时,登录方法一直提示我的凭据不存在。
IPasswordHasher hasher = new CustomPassword();

SignInManager.UserManager.PasswordHasher = hasher;

我有所不理解吗?

出于好奇,为什么您要使用自己的密码哈希函数而不是内置的函数? - Scott Chamberlain
1
内置的密码哈希程序已经完成了它所需要做的事情...为什么要发明一些已经很好用的东西呢? - Izzy
我必须从另一个应用程序进行登录,因此使用默认哈希器将会很困难。 - R34V3r
嗨,你解决了这个问题吗? - pcejrowski
1
@Izzy 有时候你需要匹配密码哈希算法来实现从旧系统到新系统的无缝过渡。 - François Beaune
1个回答

0

我曾经遇到过类似的问题,答案并不明显。

这是在 .Net6 中完成的,但我相信无论您使用的是哪个版本,都应该是一样的。

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

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

builder.Services.AddIdentity<ApplicationUser, IdentityRole>()

SigninManager 将使用您定义的密码哈希程序,而不是默认的哈希程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接