Лучший способ в iOS и Swift хранить предоставленные сервером учетные данные между запусками приложения
Мне нужно хранить постоянный токен запоминания (строку) между запусками приложения и перезапуском устройства. Токен будет предоставлен сервером, как только мой пользователь войдет в приложение и его серверную службу (которая уже создана). В частности, мне нужно установить постоянный заполнитель данных для токена запоминания, но я никогда не хочу, чтобы код фактически устанавливал значение этого заполнителя.
С одной стороны, казалось, что NSUserDefaults (теперь называемый UserDefaults) был простым способом сделать это, но после прочтения документации, похоже, что это не было целью функции. Вся документация, которую я вижу, показывает его настройку путем присвоения значения ключу. Я определенно не хочу, чтобы приложение назначало значение этому ключу.
Какой самый простой способ сделать это?
1 ответ
Самый простой способ добиться этого, учитывая также безопасность, - это использовать цепочку для ключей. Данные, хранящиеся в связке ключей, шифруются с использованием ключа, который предоставляется, например, при настройке поддержки Touch ID.
Вы никогда, никогда, никогда не должны использовать UserDefaults для такой задачи. Причина в том, что UserDefaults поддерживаются простым, незашифрованным.plist файлом, который является частью вашего пакета, и может быть более или менее легко просмотрен любым, кто может получить доступ к вашему ipa (например, любой с джейлбрейкнутым устройством).
API KeychainAccess написан на Objective-C, но есть множество оболочек, которые инкапсулируют это с помощью Swift. Вы можете использовать это на https://github.com/kishikawakatsumi/KeychainAccess