Я пытаюсь использовать Диспетчер пользователей в. 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);
}
выдает это исключение:
Ввод недопустим Строка Base-64, так как содержит не базовый 64-символ, более двух символов заполнения или недопустимый символ среди символов заполнения
Трассировка стека:
в System.Convert.FromBase64CharPtr (Char * inputPtr, Int32 inputLength) в System.Convert.FromBase64String (String s) в Microsoft.AspNetCore.Identity.PasswordHasher 1.VerifyHashedPassword(TUser user, String hashedPassword, String providedPassword)
at Microsoft.AspNetCore.Identity.UserManager
Это странно, потому что тот же код с тем же ха sh в базе данных в. Net Core 2 работает хорошо. Есть идеи, в чем проблема?
Редактировать:
Я нашел этот файл: https://github.com/dotnet/aspnetcore/blob/e276c8174b8bfdeb70efceafa81c75f8badbc8db/src/Identity/Extensions.Core/src/PasswordHasher.cs
и похоже, что проблема здесь:
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);
Но я попытался проверить ha sh в базе данных по https://base64.guru/tools/validator и все в порядке.