Uso do SecureState
August 26, 2025 · View on GitHub
SecureState é um componente da biblioteca AppState que permite armazenar dados confidenciais de forma segura no Keychain. É mais adequado para armazenar pequenas porções de dados como tokens ou senhas que precisam ser criptografados com segurança.
Principais Características
- Armazenamento Seguro: Os dados armazenados usando
SecureStatesão criptografados e salvos com segurança no Keychain. - Persistência: Os dados permanecem persistentes entre os lançamentos do aplicativo, permitindo a recuperação segura de valores confidenciais.
Limitações do Keychain
Embora o SecureState seja muito seguro, ele possui certas limitações:
- Tamanho de Armazenamento Limitado: O Keychain é projetado para pequenas porções de dados. Não é adequado para armazenar arquivos grandes ou conjuntos de dados.
- Desempenho: O acesso ao Keychain é mais lento do que o acesso ao
UserDefaults, portanto, use-o apenas quando necessário para armazenar dados confidenciais com segurança.
Exemplo de Uso
Armazenando um Token Seguro
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 do usuário: \(token)")
} else {
Text("Nenhum token encontrado.")
}
Button("Definir Token") {
userToken = "secure_token_value"
}
}
}
}
Lidando com a Ausência de Dados Seguros
Ao acessar o Keychain pela primeira vez, ou se não houver valor armazenado, SecureState retornará nil. Certifique-se de lidar com este cenário adequadamente:
if let token = userToken {
print("Token: \(token)")
} else {
print("Nenhum token disponível.")
}
Melhores Práticas
- Use para Dados Pequenos: O Keychain deve ser usado para armazenar pequenas porções de informações confidenciais como tokens, senhas e chaves.
- Evite Grandes Conjuntos de Dados: Se você precisar armazenar grandes conjuntos de dados com segurança, considere usar criptografia baseada em arquivos ou outros métodos, pois o Keychain não é projetado para armazenamento de grandes dados.
- Lide com nulo: Sempre lide com os casos em que o Keychain retorna
nilquando nenhum valor está presente.
Esta tradução foi gerada automaticamente e pode conter erros. Se você é um falante nativo, agradecemos suas contribuições com correções por meio de um Pull Request.