В AppFramework входит подключаемый модуль Secure Storage QML, позволяющий приложениям AppStudio хранить и получать доступ к конфиденциальной информации, такой как учетные данные и токены. С помощью этого модуля, данные можно зашифровывать и хранить в системном хранилище, доступном только для вашего приложения.
На устройствах с Windows, эти значения хранятся в Credential Locker. На macOS и iOS, эти значения хранятся в System Keychain. На устройствах с Android, эти значения хранятся в Android Keystore. На Linux эти значения хранятся в файле keychain.ini в настройках системы.
Чтобы использовать эту функциональность, вы сначала должны включить следующие утверждения импорта:
import ArcGIS.AppFramework.SecureStorage 1.0
Пример этой функции можно посмотреть в образце приложения, доступном в ArcGIS AppStudio, или в образцах AppStudio в репозитории GitHub.
Хранение значения строки
Компонент SecureStorage является единичным подключаемым модулем, это означает, что его не нужно настраивать перед использованием. Компонент состоит из двух методов, один для хранения значений, а второй – для извлечения значений, а также сигнала onError.
Метод setValue сохраняет пару ключ-значение в хранилище. В следующем примере кода показана работа методов, сохраняющих имя и пароль для последующего использования. Пароль также вводится скрыто, если только не включена опция его отображения.
TextField {
id: username
placeholderText: "Username"
}
TextField {
id: password
placeholderText: "Password"
anchors.left: username.right
echoMode: passwordVisible.checked === true ? TextInput.Normal : TextInput.PasswordEchoOnEdit
}
CheckBox {
id: passwordVisible
anchors.left: password.right
}
Button {
id: secureButton
text: qsTr("Store Combination")
anchors.top: username.bottom
onClicked: {
SecureStorage.setValue(username.text,password.text)
}
}
Рассмотрим следующее поведение метода setValue при его использовании:
- Максимальная длина ключа или значения зависит от ОС. Их можно включить с помощью свойств maximumKeyLength и maximumValueLength. Если ключ или значение, или их комбинация, превышает максимальную длину, попробуйте разбить их и сохранить по-отдельности.
- Ключ не может быть пустым или нулевым.
- Если вы дважды используете один и тот же ключ, предыдущее значение, связанное с этим ключом, будет перезаписано.
- Ввод пустого значения ключа приведет к удалению ключа, заданного в последовательности.
- Пользователи Android могут столкнуться с проблемой при использовании в ключе некоторых специальных символов, таких как слеш (/).
- Если методы value или setValue дают сбой, вызывается сигнал onError.
Извлечение значения строки
Метод value в SecureStorage – единственный способ доступа к данным строки, сохраненным приложением. Замена поля имени пользователя в предыдущем примере кода на следующий измененный вариант, позволит методу value автоматически заполнять поле пароля, если указанное имя уже сохранено.
TextField {
id: username
placeholderText: "Username"
onEditingFinished: {
password.text = SecureStorage.value(username.text)
}
}