_userManager.CheckPasswordAsyn c создает исключение в net core 3.1 - PullRequest
1 голос
/ 18 января 2020

Я пытаюсь использовать Диспетчер пользователей в. 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 и все в порядке.

1 Ответ

0 голосов
/ 18 января 2020

Вам необходимо либо сохранить хешированный пароль, либо переопределить метод CheckPassword для проверки вручную.

По умолчанию система проверяет хешированный пароль, и вы передаете простой текст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...