Содержание
В наших приложениях могут использоваться данные, которые требуют особой безопасности при их хранении. Например, это могут быть логины и пароли для входа в приложение, токены доступа, пароли от баз данных и так далее. Для этих целей в Blazor Hybrid мы можем использовать интерфейс ISecureStorage
, который предоставляет нам API для работы с защищенным хранилищем устройства.
Интерфейс ISecureStorage и класс SecureStorage
Этот интерфейс предоставляет нам API для хранения настроек в виде пар «ключ-значение» в защищенном хранилище устройства. Интерфейс ISecureStorage
реализуется в статическом классе SecureStorage
, который предоставляет нам ряд асинхронных методов для работы с настройками:
Метод | Описание |
Get |
Возвращает и расшифровывает значение для заданного ключа. |
Remove(String) |
Удаляет ключ и связанное с ним значение, если он существует. |
Remove |
Удаляет все хранимые пары «ключ-значение». |
Set |
Задает и шифрует значение для заданного ключа. |
Следует отметить, что, в отличие от класса 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.
. В качестве типов данных для записи SecureStorage
принимает только строки.