ASP.Net 两个不同的 Web 应用程序上的身份密码哈希问题

ASP.Net Identity PasswordHash issue on two different web applications

我有一个连接到 SQL 服务器数据库的现有 .NET 4.5 Webforms Web 应用程序。我正在使用 ASP.Net 身份。这个网站已经 运行 几年了。

在我的下一个项目中,我决定在没有 EF 的情况下在 .NET Core 2.2 中创建它。它使用相同的 SQL 服务器数据库和用户 table。我所使用的只是 Microsoft.AspNetCore.Identity.UI,我创建了我的客户 UserStore,UserRole 类。登录过程有效。

但是,.NET Core 2.2 应用程序的登录过程会更新用户的 PasswordHash。初始登录调用 SetPasswordHashAsync,然后通过 UpdateAsync 更新用户。这意味着登录不再适用于 Webforms 应用程序。

比较两个密码哈希值,.NET Core 2.2 哈希值更长,所以它使用不同的生成方式吗?如果可以,有没有办法让两个应用程序使用相同的算法?

谢谢

最后的解决方案非常简单,我只需要在 Startup Configure 方法中将 PasswordHasherCompatibilityMode 注册到 IdentityV2 即可。

services.Configure<PasswordHasherOptions>(options => options.CompatibilityMode = PasswordHasherCompatibilityMode.IdentityV2);