把凭据直接存储在Swift文件中并不是最安全的方式。可以使用Keychain或类似的安全存储库来安全地存储凭据。
下面是一个使用Keychain的示例:
import Foundation
import Security
class KeychainService {
class func savePassword(_ password: String, forAccount account: String) {
guard let passwordData = password.data(using: String.Encoding.utf8) else { return }
let query = [
kSecClass as String : kSecClassInternetPassword,
kSecAttrAccount as String : account,
kSecValueData as String : passwordData ] as [String : Any]
SecItemDelete(query as CFDictionary)
SecItemAdd(query as CFDictionary, nil)
}
class func getPassword(forAccount account: String) -> String? {
let query = [
kSecClass as String : kSecClassInternetPassword,
kSecAttrAccount as String : account,
kSecReturnData as String : true ] as [String : Any]
var dataTypeRef: AnyObject?
let status = SecItemCopyMatching(query as CFDictionary, &dataTypeRef)
if status == errSecSuccess {
if let retrievedData = dataTypeRef as? Data,
let password = String(data: retrievedData, encoding: String.Encoding.utf8) {
return password
}
}
return nil
}
}
使用示例:
let username = "exampleUser"
let password = "password123"
// Save password
KeychainService.savePassword(password, forAccount: username)
// Retrieve password
if let savedPassword = KeychainService.getPassword(forAccount: username) {
print("Saved password: \(savedPassword)")
} else {
print("No password saved for \(username)")
}
上一篇:把已知精度的整数转换为浮点数