由于JavaScript启动后,Blazor自定义AuthenticationStateAsync调用失败

问题描述 投票:0回答:1

[我有Blazor服务器端程序,通过从JavaScript读取令牌,我实现了自己的身份验证。

工作正常-除非在启动时读取失败(当然,这是因为服务器端渲染需要OnAfterRender进行JavaScript调用),但启动失败除外。

但是这里的代码是由Blazor本身执行的,并引发异常。

我该如何解决,该调用不会在其他运行时(渲染后)上执行或运行?enter image description here

Thx

blazor
1个回答
0
投票

JSInterop只能在渲染您的应用程序之后才能访问,而不能在此之前访问。要解决此问题,您需要从组件的OnAfterRender或OnAfterRenderAsyn方法调用TokenStorageService.GetToken。这是一个代码片段,可以进行恶魔交易:

@page "/mypage"

@inject TokenStorageService tokenService 

@code{

  protected override async Task OnAfterRenderAsyn (bool firstRender)
  {
     // Ensure that the app has been rendered, and it is the first 
     // render. Note also that this code is only executed once. And it
     // won't be executed on recurring calls to the OnAfterRenderAsyn.
     // This makes it an ideal place to initialize JavaScript objects.
     if(firstRender)
     {
         var token = await TokenStorageService.GetToken();
     }
 }
 }
© www.soinside.com 2019 - 2024. All rights reserved.