Содержание
В наших приложениях могут использоваться данные, которые требуют особой безопасности при их хранении. Например, это могут быть логины и пароли для входа в приложение, токены доступа, пароли от баз данных и так далее. Для этих целей в 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 принимает только строки.

