Использование 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.