验证 .NET Core Identity 中的 ASP.NET Core EF Identity 用户

问题描述 投票:0回答:1

我编写了一个 ASP.NET Core 8.0 Web API 项目,该项目使用旧版 ASP.NET MVC 项目(在 .NET 4.6 上)的数据库。

我已成功连接身份框架,并且我正在将

IdentityUser
从数据库中拉出

builder.Services.AddIdentity<User, IdentityRole>()
                .AddEntityFrameworkStores<MydbContext>();

我知道它工作正常,因为这段代码:

public AuthenticationController(SignInManager<User> signInManager, UserManager<User> userManager)
{
    _signInManager = signInManager ?? throw new ArgumentNullException(nameof(signInManager));
    _userManager = userManager ?? throw new ArgumentNullException(nameof(userManager));
}

[HttpGet("Authenticate")]
public async Task<ActionResult> Authenticate(string username, string password)
{
   var user = await _userManager.FindByNameAsync(username);
   var check = _signInManager.CheckPasswordSignInAsync(user, password, false);

    if (check.Result.Succeeded)
    {
        return Ok();
    }


    return Ok();
}

User
对象是正确的,我可以看到它包含所有正确的值。

但是当我尝试执行

CheckPasswordSignInAsync
时,它总是返回 FALSE - 即使密码正确,并且旧版 ASP.NET MVC 项目可以完美地使用它登录。

我假设它与不同的密码哈希逻辑有关,但在原始项目中我没有看到任何关于密码哈希、盐或我可以尝试复制到新应用程序中的任何类型的内容。我认为这两个应用程序都在默认值下运行

我觉得我正面临着同样的问题 这里提到了

但他们不是真正的解决方案,或者什么

注意:我也尝试添加这个,但没有帮助

builder.Services.Configure<PasswordHasherOptions>(options => options.CompatibilityMode = PasswordHasherCompatibilityMode.IdentityV2);
asp.net-mvc asp.net-core-mvc asp.net-identity
1个回答
0
投票

我正在使用而不是CheckPasswordSignInAsync

var check = _userManager.PasswordHasher.VerifyHashedPassword(user, user.PasswordHash, Password);

返回一个

PasswordVerificationResult.Success
© www.soinside.com 2019 - 2024. All rights reserved.