我想根据授权更改刷新组件。这是我的组件:
@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
属性的方法。