Использование SecureState

August 26, 2025 · View on GitHub

SecureState — это компонент библиотеки AppState, который позволяет безопасно хранить конфиденциальные данные в связке ключей. Он лучше всего подходит для хранения небольших фрагментов данных, таких как токены или пароли, которые необходимо надежно зашифровать.

Ключевые особенности

  • Безопасное хранилище: данные, хранящиеся с помощью SecureState, шифруются и безопасно сохраняются в связке ключей.
  • Постоянство: данные остаются постоянными между запусками приложения, что позволяет безопасно извлекать конфиденциальные значения.

Ограничения связки ключей

Хотя SecureState очень безопасен, у него есть определенные ограничения:

  • Ограниченный размер хранилища: связка ключей предназначена для небольших фрагментов данных. Она не подходит для хранения больших файлов или наборов данных.
  • Производительность: доступ к связке ключей медленнее, чем доступ к UserDefaults, поэтому используйте его только при необходимости безопасного хранения конфиденциальных данных.

Пример использования

Хранение безопасного токена

import AppState
import SwiftUI

extension Application {
    var userToken: SecureState {
        secureState(id: "userToken")
    }
}

struct SecureView: View {
    @SecureState(\.userToken) var userToken: String?

    var body: some View {
        VStack {
            if let token = userToken {
                Text("Токен пользователя: \(token)")
            } else {
                Text("Токен не найден.")
            }
            Button("Установить токен") {
                userToken = "secure_token_value"
            }
        }
    }
}

Обработка отсутствия безопасных данных

При первом доступе к связке ключей или если значение не сохранено, SecureState вернет nil. Убедитесь, что вы правильно обрабатываете этот сценарий:

if let token = userToken {
    print("Токен: \(token)")
} else {
    print("Токен недоступен.")
}

Лучшие практики

  • Используйте для небольших данных: связку ключей следует использовать для хранения небольших фрагментов конфиденциальной информации, такой как токены, пароли и ключи.
  • Избегайте больших наборов данных: если вам необходимо безопасно хранить большие наборы данных, рассмотрите возможность использования шифрования на основе файлов или других методов, поскольку связка ключей не предназначена для хранения больших данных.
  • Обрабатывайте nil: всегда обрабатывайте случаи, когда связка ключей возвращает nil при отсутствии значения.

Этот перевод был сгенерирован автоматически и может содержать ошибки. Если вы носитель языка, мы будем признательны за ваши исправления через Pull Request.