ISecureStorage — хранение настроек приложения в защищенном хранилище

В наших приложениях могут использоваться данные, которые требуют особой безопасности при их хранении. Например, это могут быть логины и пароли для входа в приложение, токены доступа, пароли от баз данных и так далее. Для этих целей в Blazor Hybrid мы можем использовать интерфейс ISecureStorage, который предоставляет нам API для работы с защищенным хранилищем устройства.

Интерфейс ISecureStorage и класс SecureStorage

Этот интерфейс предоставляет нам API для хранения настроек в виде пар «ключ-значение» в защищенном хранилище устройства. Интерфейс ISecureStorage реализуется в статическом классе SecureStorage, который предоставляет нам ряд асинхронных методов для работы с настройками:

Метод Описание
GetAsync(String) Возвращает и расшифровывает значение для заданного ключа.
Remove(String) Удаляет ключ и связанное с ним значение, если он существует.
RemoveAll() Удаляет все хранимые пары «ключ-значение».
SetAsync(String, String) Задает и шифрует значение для заданного ключа.

Следует отметить, что, в отличие от класса Preferences, который мы рассматривали в предыдущей части, SecureStorage не может возвращать значения по умолчанию для настроек, а также принимает в качестве значений настроек только строки. Теперь рассмотрим работу с защищенным хранилищем.

Использование SecureStorage для работы с настройками приложения

Создадим новое приложение Blazor Hybrid и изменим код компонента Home следующим образом:

@page "/"

<h1>@message</h1>

@text

<br/>
<button @onclick="WritePreferences">Записать настойки</button>
<button @onclick="Clear">Очистить настойки</button>

@code{
    string? message;
    string? text;

    private async Task ReadWritePreferences()
    {
        message = await SecureStorage.Default.GetAsync("Message");
        if (message == null)
        {
            message = "Привет, Blazor (значение по умолчанию)";
            await SecureStorage.Default.SetAsync("Message", message);
        }

        text = await SecureStorage.Default.GetAsync("Text");
        if (text == null)
        {
            text = "Приложение демонстрирует работу с SecureStorage (значение по умолчанию)";
            await SecureStorage.Default.SetAsync("Text", text);
        }
    }

    private async Task WritePreferences()
    {
        await SecureStorage.Default.SetAsync("Message", "Привет, Blazor");
        await SecureStorage.Default.SetAsync("Text", "Приложение демонстрирует работу с SecureStorage");
        await ReadWritePreferences();
    }

    protected override async Task OnInitializedAsync()
    {
        await ReadWritePreferences();
    }

    public async Task Clear()
    {
        SecureStorage.Default.RemoveAll();
        await ReadWritePreferences();
    }
}

Здесь метод ReadWritePreferences() пытается прочитать значения настроек с ключами Message и Text. Если указанные настройки не находятся в защищенном хранилище, то производится запись значений по умолчанию, например:

if (message == null)
{
    message = "Привет, Blazor (значение по умолчанию)";
    await SecureStorage.Default.SetAsync("Message", message);
}

Метод WritePreferences() производит запись значений для настроек, а Clear() очищает хранилище от всех настроек. Также, в разметке компонента добавлены две кнопки, вызывающие методы WritePreferences() и Clear(), соответственно.

После первого запуска приложения, так как защищенное хранилище не содержит никаких данных, мы увидим:

После записи настроек вид главной страницы приложения изменится следующим образом:

Можно перезапустить приложение и убедиться, что записанные ранее настройки приложения успешно загружаются из защищенного хранилища.

Итого

ISecureStorage — это интерфейс, предоставляющий нам API для хранения настроек приложения в виде пар «ключ-значение» в защищенном хранилище устройства.  Интерфейс реализуется статическим классом SecureStorage, который содержится в пространстве имен Microsoft.Maui.Storage. В качестве типов данных для записи SecureStorage принимает только строки.

Подписаться
Уведомить о
guest
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии