Blazor의 localStorage 브라우저에 어떻게 액세스합니까?

asp.net-core blazor c#

문제

JWT를 지원하기 위해 토큰을 유지해야합니다. 이것에 접근 할 수있는 시설이 있습니까? 아니면 지금 당장이 기능에 액세스하기 위해 자체 자바 스크립트 함수를 등록해야합니까?

편집 : 조언마다 JS Interop를 사용하려고했습니다.

<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의 경우 자바 스크립트 interop을 직접 작성해야합니다. 그러나 나는 이것이 0.2 버전에서 효과가 있었다고 생각합니다.

또는 (세션간에 저장소가 필요하지 않은 경우) 여기에서 수행 한 것처럼 자신 만의 DI 싱글 톤을 작성할 수 있습니다 ( https://github.com/aspnet/samples/blob/master/samples/aspnetcore/blazor/FlightFinder/FlightFinder). 클라이언트 / 서비스 / AppState.cs

편집하다
이에 대한 공개 홍보가 있으므로 곧있을 것입니다. https://github.com/aspnet/Blazor/pull/205

Edit2 0.2가 완료되었지만 아직 localstorage가 없습니다. 그 동안 나는이 패키지를 개발했습니다 : BlazorExtensions on nuget


인기 답변

기본적으로 Blazor에 구현 될 수도 있지만 현재는 다음을 사용하고 있습니다 : Nuget - BlazorStorage




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.