#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 только один раз на самом деле хорошей идеей?