Aspnet Boilerplate GetValidTwoFactorProvidersAsync возвращает пустой список - PullRequest
0 голосов
/ 08 октября 2018

Я использую Aspnet Boilerplate для управления мультитенантной системой.В настоящее время я пытаюсь включить двухфакторную аутентификацию, которая запекается в шаблоне.Я вошел в хост и включил 2FA (потому что я понимаю, что он не может быть включен в tenanats, если он не включен в хосте сначала).После того, как я это сделаю, я теперь вижу настройки для включения 2FA в каждом арендаторе (что я и сделал).Моя проблема заключается в том, что, хотя пользователи хоста действительно запрашивают код, как и ожидалось, пользователи-арендаторы никогда не запрашивают код.Я сузил это до следующей проблемы.При успешном входе это называется:

var signInResult = await _signInManager.SignInOrTwoFactorAsync(loginResult, loginModel.RememberMe);

Это всегда возвращает RequiresTwoFactor == false.Причина этого заключается в том, что в рамках этого вызова выполняется вызов:

GetValidTwoFactorProvidersAsync(TUser user)

, который, в свою очередь, вызывает функцию с тем же именем в .NET Core.Этот вызов возвращает пустой список, что означает, что у меня нет зарегистрированных провайдеров TwoFactor.Что странно, потому что, входя в систему как хост, я получаю провайдеров, но в качестве арендатора он возвращается пустым.Есть ли что-то, что я пропускаю, почему это может происходить.Кроме того, где именно в стандартном коде те (провайдеры электронной почты и SMS) зарегистрированы в первую очередь?

1 Ответ

0 голосов
/ 09 октября 2018

См. Конфигурацию для 2FA на AbpZeroSettingProvider.cs

Но реализация двухфакторной аутентификации не включена в Aspnet Boilerplate.

Это функция в AspNetZero , см. https://aspnetzero.com/Documents/Development-Guide-Core#two-factor-login

...