Persistarea Datelor cu ProtectedLocalStorage

  • Doru Bulubasa
  • 23 May 2025

În Blazor WebAssembly, ProtectedLocalStorage oferă o metodă sigură pentru a salva și citi date din browser, criptând automat informațiile salvate.

🔐 Ce este ProtectedLocalStorage?

ProtectedLocalStorage face parte din Microsoft.AspNetCore.Components.WebAssembly.ProtectedBrowserStorage. Este un wrapper peste localStorage care folosește protecție criptografică pentru date.

✅ Avantaje

  • Datele sunt stocate local, fără apeluri la server.

  • Sunt criptate automat cu DataProtection.

  • Ideal pentru preferințe de utilizator, teme, valori temporare.


🧪 Exemplu: Salvarea unei teme (light/dark)

1️⃣ Adaugă serviciul în Program.cs

builder.Services.AddScoped<ProtectedLocalStorage>();

2️⃣ Creează un component simplu:

@inject ProtectedLocalStorage localStorage

<h3>Selectează tema:</h3>
<select @onchange="SaveTheme">
    <option value="light">Light</option>
    <option value="dark">Dark</option>
</select>

<p>Tema curentă: @theme</p>

@code {
    private string theme;

    protected override async Task OnInitializedAsync()
    {
        var result = await localStorage.GetAsync<string>("user-theme");
        if (result.Success)
        {
            theme = result.Value;
        }
    }

    private async Task SaveTheme(ChangeEventArgs e)
    {
        theme = e.Value.ToString();
        await localStorage.SetAsync("user-theme", theme);
    }
}


🧠 Alte exemple de utilizare:

  • Reținerea limbii alese de utilizator

  • Salvarea unui pas curent dintr-un formular

  • Personalizarea interfeței


🧩 Tips:

  • ProtectedLocalStorage este asincron – nu uita să folosești await.

  • Datele nu se trimit automat către server – doar în browser.

  • Nu este potrivit pentru informații critice sau sensibile permanent.


🔚 Concluzie

ProtectedLocalStorage este ideal pentru scenarii locale simple, dar sigure, în aplicații Blazor WebAssembly. Ușor de implementat și foarte util pentru o experiență personalizată a utilizatorului.

Scrie un comentariu

Adresa de mail nu va fi publicata. Campurile obligatorii sunt marcate cu *