Entity framework core _userManager.CheckPasswordAsync在net core 3.1中引发异常

Entity framework core _userManager.CheckPasswordAsync在net core 3.1中引发异常,entity-framework-core,asp.net-identity,.net-core-3.1,Entity Framework Core,Asp.net Identity,.net Core 3.1,我试图在.NET Core 3.1中使用用户管理器,但以下代码: public async Task<bool> CheckPassword(User user, string password) { var appUser = _mapper.Map<AppUser>(user); return await _userManager.CheckPasswordAsync(appUser, password); }

我试图在.NET Core 3.1中使用用户管理器,但以下代码:

    public async Task<bool> CheckPassword(User user, string password)
    {
        var appUser = _mapper.Map<AppUser>(user);

        return await _userManager.CheckPasswordAsync(appUser, password);
    }

但我试着通过验证数据库中的哈希值,结果没问题

您需要保存哈希密码,或者需要覆盖CheckPassword方法以进行手动检查


默认情况下,系统会检查哈希密码,您传递的是纯文本。

您需要保存哈希密码,或者需要覆盖CheckPassword方法以手动检查


默认情况下,系统会检查哈希密码,您将传递纯文本。

但当PasswordHasher试图从数据库表中编码编码字符串时,问题似乎出现了。这个散列是UserManager在创建用户时创建的。那么,数据库中的列是否有合适的大小来配合密码的编码字符串?我认为您保存在数据库中的密码被截断了。你能核实一下吗?这可能是一个原因。数据库中有以下字符串:“AQAAAAAAACCQAAAEC+6MW3RP8RVJSXGCFNTWPHZKUI5K8FCDRKL1F7WUZPQMPMXLYE84PYCMCBXZNONSG=”,以及它的有效Base64字符串。您如何创建_userManger对象?您可以共享该代码段吗?在启动时,我将其配置为:,然后通过DIBut,但当PasswordHasher试图对数据库表中的编码字符串进行编码时,似乎出现了问题。这个散列是UserManager在创建用户时创建的。那么,数据库中的列是否有合适的大小来配合密码的编码字符串?我认为您保存在数据库中的密码被截断了。你能核实一下吗?这可能是一个原因。数据库中有以下字符串:“AQAAAAAAACCQAAAEC+6MW3RP8RVJSXGCFNTWPHZKUI5K8FCDRKL1F7WUZPQMPMXLYE84PYCMCBXZNONSG=”,以及它的有效Base64字符串。您如何创建_userManger对象?你能分享这个片段吗?在启动时,我会这样配置它:,然后通过DI
 public virtual PasswordVerificationResult VerifyHashedPassword(TUser user, string hashedPassword, string providedPassword)
    {
        if (hashedPassword == null)
        {
            throw new ArgumentNullException(nameof(hashedPassword));
        }
        if (providedPassword == null)
        {
            throw new ArgumentNullException(nameof(providedPassword));
        }

        byte[] decodedHashedPassword = Convert.FromBase64String(hashedPassword);