Я хочу сделать мой компонент refre sh на основании изменения авторизации. Вот мой компонент:
@inject IAuthService AuthService
@implements IDisposable
<AuthorizeView>
<Authorized>
Logged as: @Identity
</Authorized>
<NotAuthorized>
</NotAuthorized>
</AuthorizeView>
@code
{
private string Identity { get; set; }
protected override async Task OnInitializedAsync()
{
AuthService.RefreshRequested += StateHasChanged;
Identity = $"{(await AuthService.GetClaimFromToken("sub"))?.Value} ({(await AuthService.GetClaimFromToken("unique_name"))?.Value})";
}
public void Dispose()
{
AuthService.RefreshRequested -= StateHasChanged;
}
}
, а вот часть моего сервиса:
public class AuthService: IAuthService
{
// ...
public event Action RefreshRequested;
public async Task<RequestResponse> Token(LoginModel loginModel)
{
// some logic
CallRequestRefresh();
return JsonConvert.DeserializeObject<RequestResponse>(result);
}
private void CallRequestRefresh()
{
RefreshRequested?.Invoke();
}
}
Token(...)
метод используется в другом компоненте. Я не знаю, почему в упомянутом компоненте StateHasChanged
не срабатывает.
Все, чего я на самом деле хочу достичь, - это предоставить какой-нибудь способ обновить свойство Identity
, используя данный асинхронный метод (GetClaimFromToken
).