BlazorのブラウザlocalStorageにアクセスするにはどうすればいいですか?

asp.net-core blazor c#

質問

私は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'という名前の登録済み関数が見つかりませんでした。

FYI、これはBlazor VSの定型プロジェクトのMainLayout.cshtmlにあります。

(適切であれば新しい質問を作成することができますが、この質問には多少関連しています)

受け入れられた回答

0.1の場合は、独自のjavascript interopを作成する必要があります。しかし、私はこれがうまくいくものだと思っています。それはおそらく0.2リリースです。

代わりに(セッション間にストレージが必要ない場合)、次のように独自のDIシングルトンを作成できます: https : //github.com/aspnet/samples/blob/master/samples/aspnetcore/blazor/FlightFinder/FlightFinderクライアント/サービス/ AppState.cs

編集
これには公開PRがありますので、間もなく公開予定です: https : //github.com/aspnet/Blazor/pull/205

Edit2 0.2は完了しましたが、ローカルストレージはまだありません。その間、私はこれのためのパッケージを開発しました: BlazorExtensions on nuget


人気のある回答

これはデフォルトでBlazorに実装されるかもしれませんが、現在は次のものを使用しています: Nuget - BlazorStorage



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ