Задать вопрос
@RomanSuhachev

Аутентификация Blazor Server, почему AuthorizeView долго получает данные об аутентификации?

Изучаю Blazor Server и столкнулся с такой интересной проблемой (фичей не знаю). Есть вот такой компонент header:

<AuthorizeView>
    <NotAuthorized>
        <NavLink class="p-4 font-medium hover:bg-(--header-btn-hover)" href="/registration">Вход</NavLink>
    </NotAuthorized>
    <Authorized>
        <li class="main-navigation-list__item flex items-center w-full md:hidden">
            <NavLink class="p-4 font-medium hover:bg-(--header-btn-hover) w-full text-center" href="/profile">Профиль</NavLink>
        </li>
        <li class="main-navigation-list__item flex items-center w-full md:hidden">
            <button class="p-4 font-medium hover:bg-(--header-btn-hover) cursor-pointer w-full text-center" @onclick="@Logout">Выйти</button>
        </li>

        //Dropdown menu
        <details class="dropdown hover:cursor-pointer select-none hidden md:block">
            <summary class="p-4 bg-black border-none list-none shadow-none text-(--white-900) font-normal hover:bg-(--header-btn-hover) hover:rounded-none">@authState.User.Identity.Name</summary>
            <ul class="menu dropdown-content rounded-box z-1 shadow-sm bg-black w-full">
                <li class="main-navigation-list__item flex items-center w-full">
                    @if (NavManager.ToBaseRelativePath(NavManager.Uri) == "profile")
                    {
                        <span class="p-4 font-medium w-full text-center cursor-auto">Профиль</span>
                    }
                    else
                    {
                        <NavLink class="p-4 font-medium hover:bg-(--header-btn-hover) w-full text-center" href="/profile">Профиль</NavLink>
                   }
                </li>
                <li class="main-navigation-list__item flex items-center w-full">
                    <button class="p-4 font-medium hover:bg-(--header-btn-hover) cursor-pointer w-full text-center" @onclick="@Logout">Выйти</button>
               </li>
            </ul>
        </details>
    </Authorized>
</AuthorizeView>

Данные об аутентификации получаю при инициализации компонента:

protected override async Task OnInitializedAsync()
{
    ClientDownloadUrl = Configuration.GetValue<string>("GameServer:ClientUrl");
    authState = await AuthStateProvider.GetAuthenticationStateAsync();
}

Все бы ничего, все работает отлично, JWT токен сохраняется и считывается с него имя пользователя, НО, каждый раз, когда я обновляю страницу и пользователь уже залогинен, то происходит "мерцание" пункта меню, который отвечает за вывод имени пользователя - сначала показывается надпись "Вход" и только затем она меняется на "имя пользователя".

Хотел бы узнать, какие есть способы решения данной проблемы, или это фича? Пробовал использовать PersistentComponent, но результата это не принесло.
  • Вопрос задан
  • 55 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы