Как определить, активировал ли пользователь Authenticator - PullRequest
0 голосов
/ 21 мая 2019

Я работаю над приложением ASP.NET Core 3.0, которое использует Identity Framework для аутентификации пользователей. Источником данных является база данных MS SQL Server.

В качестве двухфакторной аутентификации MS Authenticator по умолчанию настроен и работает.

На самом деле, у меня есть некоторые пользователи, которые включили Аутентификатор, и некоторые (большинство), которые этого не сделали. Тем, у кого нет, хочу показать дополнительный пункт меню. Большинство пунктов меню построены на основе ролей и работают нормально.

Возможно ли это с помощью фреймворка или мне нужно самостоятельно запросить таблицу пользователей?

@using Microsoft.AspNetCore.Identity
@inject SignInManager<IdentityUser> SignInManager
@inject UserManager<IdentityUser> UserManager


@if (SignInManager.IsSignedIn(User))
{
    //...

    <a href="#" class="dropdown-toggle">Profile</a>

    //...

    @if (!_2faEnabled) //How to determine _2faEnabled?
    {
        <li><a href="~/Profile/Manage/EnableAuthenticator">Enable 2FA</a></li>
    }

    ///...
}

1 Ответ

1 голос
/ 22 мая 2019

Получить текущего пользователя, используя UserManager как:

var user = await UserManager.GetUserAsync(User);

, затем получить значение TwoFactorEnabled из объекта user.


Примечание: , если Enable 2FA находится в главном меню, например: Главная |Проекты |Задачи |Включить 2FA |..так далее.тогда IMO это будет проблемой, потому что вы будете попадать в базу данных каждый раз, когда пользователь перемещается по вашему сайту.sooo вы могли бы рассмотреть возможность хранения значения user.TwoFactorEnabled где-то после получения его в первый раз из БД.

Принимая во внимание, что если Enable 2FA находится внутри определенной страницы, например: Manage 2FA и внутри нее вы получаете the current user, а затем проверить наличие TwoFactorEnabled не так уж и плохо (поскольку пользователи не будут часто заходить на эту страницу).

...