Конфигурация приложения .NET MAUI. Защищенное хранилище (ISecureStorage)

Еще одним способом хранения настроек приложения .NET MAUI является использование защищенного хранилище. Защищенное хранилище можно использовать для хранения каких-либо конфиденциальные данных, например, паролей доступа к ресурсам, ключей API и так далее. Для работы с защищенным хранилищем используется интерфейс ISecureStorage.

Защищенное хранилище

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

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

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

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

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

Создадим новое приложение .NET MAUI и изменим файл MauiProgram.cs, добавив настройки приложения в защищенное хранилище:

using Microsoft.Extensions.Logging;

namespace MauiConfiguration;

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {

        //устанавливаем настройки приложения
        SecureStorage.Default.SetAsync("Message", "Привет, .NET MAUI");
        SecureStorage.Default.SetAsync("Text", "Это пример работы с SecureStorage");
   
        var builder = MauiApp.CreateBuilder();
        builder
            .UseMauiApp<App>()
            .ConfigureFonts(fonts =>
            {
                fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
                fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
            });



#if DEBUG
        builder.Logging.AddDebug();
#endif

        return builder.Build();
    }
}

Теперь изменим обработчик OnCounterClicked() в файле MainPage.xaml.cs, использовав его для чтения настроек:

private async void OnCounterClicked(object sender, EventArgs e)
{
    descriptionLabel.Text = await SecureStorage.Default.GetAsync("Text");
    helloLabel.Text = await SecureStorage.Default.GetAsync("Message"); 
}

Здесь мы используем асинхронные методы SecureStorage для получения настроек приложения. Внесем из менения в XAML-код страницы MainPage:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MauiConfiguration.MainPage">

    <ScrollView>
        <VerticalStackLayout
            Padding="30,0"
            Spacing="25">
           

            <Label x:Name="helloLabel"
                Text="Hello, World!"
                Style="{StaticResource Headline}"
                SemanticProperties.HeadingLevel="Level1" />

            <Label x:Name="descriptionLabel" Text="Descriptiom"/>
            
            <Button
                x:Name="CounterBtn"
                Text="Click me" 
                SemanticProperties.Hint="Counts the number of times you click"
                Clicked="OnCounterClicked"
                HorizontalOptions="Fill" />
        </VerticalStackLayout>
    </ScrollView>

</ContentPage>

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

Защищенное хранилище

Итого

Защищенное хранилище в приложениях .NET MAUI может использоваться для хранения конфиденциальных данных. В SecureStorage хранятся строки, а для их получения используются асинхронные методы.

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