JWT をサポートしたいので、トークンを保持する必要があります。これにアクセスするための機能はありますか?それとも、今のところこの機能にアクセスするために、独自の JavaScript 関数を登録するだけでよいのでしょうか?
編集:アドバイスに従って、JS相互運用を次のように使用しようとしました:
<script>
localStorage.setItem("key1", "key1data");
Blazor.registerFunction("readStorage", (key) => {
return localStorage.getItem(key);
});
</script>
@if (jwtKey == null)
{
<div class="login-panel">
<p>JWT not loaded</p>
</div>
}
else
{
<div class="login-panel">
<p>@jwtKey</p>
</div>
}
@functions {
public RenderFragment Body { get; set; }
string jwtKey;
protected override async Task OnInitAsync()
{
jwtKey = RegisteredFunction.Invoke<string>("readStorage", "key1");
if (jwtKey == null)
{
jwtKey = "Unknown";
}
}
}
しかし、これにより diag で WASM エラーが発生します。
WASM: [Microsoft.AspNetCore.Blazor.Browser.Interop.JavaScriptException] 'readStorage' という名前の登録済み関数が見つかりませんでした。WASM: エラー: 'readStorage' という名前の登録済み関数が見つかりませんでした。
参考までに、これは Blazor VS ボイラープレート プロジェクトの MainLayout.cshtml にあります。
(必要に応じて新しい質問を作成できます。ただし、これに多少関連しています)