Хранение конфиденциальной информации в NSUserDefaults не рекомендуется. Вы должны использовать Keychain services, вместо:
Сделав один вызов к этому API, приложение может хранить небольшие кусочки секретной информации на связку ключей, из которых приложение может впоследствии получить информацию, и с помощью одного вызова , Брелок привязывает данные, зашифровывая его перед сохранением в файловой системе, освобождая вас от необходимости внедрять сложные алгоритмы шифрования.
Теперь IOS брелок обеспечивает довольно низкоуровневое API, так что, как правило, лучше использовать более высокого уровня обертки, такие как те, которые предусмотрены Locksmith или keychain-swift.
Например, при использовании последнего, хранения и чтения с брелка так просто, как делать (после необходимой настройки):
Если вы предпочитаете, вы можете пойти прямой путь и использовать образец, предоставленную Apple по вышеуказанной ссылке.
let keychain = KeychainSwift()
keychain.set("hello world", forKey: "my key")
keychain.get("my key")
EDIT:
В структуре кода, вы можете создать класс для инкапсуляции маркер и любую другую информацию, необходимую для каждого запроса. Этот класс имел бы, например, метод init
, принимающий токен; и метод, называемый createNews
со следующей упрощенной подписью:
func createNews(news:NewsEntity) {
...
В зависимости от ваших предпочтений стиля, это может быть синглтон читать ваш маркер с брелка (или NSUserDefaults, хотя это не было бы желательно).
Почему пользовательский по умолчанию не рекомендуется, брелок сохраняет вещь навсегда, пока ОС не будет очищена. Но обычно мы используем для хранения по умолчанию пользователя, поскольку это будет удалено, когда приложение будет удалено с устройства. Не могли бы вы объяснить? – Janmenjaya
Спасибо за ответ. Вопрос не в безопасности, а в основном о организации кода, я спросил: как избежать аргумента токена во всех методах API, требуется этот токен. Я использую rxAlamofire, Alamofire. –
@Janmenjaya: в основном вы хотите хранить конфиденциальную информацию с использованием более сильного шифрования. все, что нечувствительно, отлично с nsuserdefaults. скажем, если вы подключите свое устройство к Mac, вы можете легко прочитать nsuserdefault приложения - это довольно хромая безопасность. – sergio