Аутентификация веб-сборки Blazor: безопасно ли кэшировать утверждения?

#blazor #blazor-webassembly

Вопрос:

У меня есть страница WebAssembly Blazor, которая ведет себя по-разному в зависимости от наличия утверждения в удостоверении пользователя.

Стандартный подход, который я нашел почти во всех примерах, таков:

 var state = await AuthStateProvider.GetAuthenticationStateAsync();
var user = state.User;
if (state.User.Identity.IsAuthenticated)
{
    var hasClaim = user.HasClaim("MyClaim", "MyValue");
}
 

Интересно, безопасно ли создавать hasClaim область видимости страницы:

 @if (hasClaim)
{
    <MyComponent></MyComponent>
}

@code {

    private bool hasClaim;

    protected override async Task OnInitializedAsync()
    {
        var state = await AuthStateProvider.GetAuthenticationStateAsync();
        var user = state.User;
        if (state.User.Identity.IsAuthenticated)
        {
            hasClaim = user.HasClaim("MyClaim", "MyValue");
        }
    }

    private SomeMethod()
    {
        if(hasClaim)
        {
            /* ... */
        }
    }
}
 

Используя этот подход, я могу вести себя по-разному в зависимости от наличия заявки, но если состояние аутентификации изменяется, hasClaim оно автоматически не обновляется.

Является ли вызов GetAuthenticationStateAsync только один раз на самом деле хорошей идеей?