Лучший способ в iOS и Swift хранить предоставленные сервером учетные данные между запусками приложения

Мне нужно хранить постоянный токен запоминания (строку) между запусками приложения и перезапуском устройства. Токен будет предоставлен сервером, как только мой пользователь войдет в приложение и его серверную службу (которая уже создана). В частности, мне нужно установить постоянный заполнитель данных для токена запоминания, но я никогда не хочу, чтобы код фактически устанавливал значение этого заполнителя.

С одной стороны, казалось, что NSUserDefaults (теперь называемый UserDefaults) был простым способом сделать это, но после прочтения документации, похоже, что это не было целью функции. Вся документация, которую я вижу, показывает его настройку путем присвоения значения ключу. Я определенно не хочу, чтобы приложение назначало значение этому ключу.

Какой самый простой способ сделать это?

1 ответ

Самый простой способ добиться этого, учитывая также безопасность, - это использовать цепочку для ключей. Данные, хранящиеся в связке ключей, шифруются с использованием ключа, который предоставляется, например, при настройке поддержки Touch ID.

Вы никогда, никогда, никогда не должны использовать UserDefaults для такой задачи. Причина в том, что UserDefaults поддерживаются простым, незашифрованным.plist файлом, который является частью вашего пакета, и может быть более или менее легко просмотрен любым, кто может получить доступ к вашему ipa (например, любой с джейлбрейкнутым устройством).

API KeychainAccess написан на Objective-C, но есть множество оболочек, которые инкапсулируют это с помощью Swift. Вы можете использовать это на https://github.com/kishikawakatsumi/KeychainAccess

Другие вопросы по тегам