تخزين آمن

يضم AppFramework المكون الإضافي Secure Storage QML، وهو ما يتيح لتطبيقات AppStudio تخزين المعلومات الحساسة مثل بيانات الاعتماد أو الرموز المميزة والوصول إليها. باستخدام هذه الأداة الإضافية، يمكن تشفير بياناتك وتخزينها في موقع يوفره النظام بالتاريخ الذي يمكن لتطبيقك فقط الوصول إليه.

في أجهزة Windows، يتم تخزين هذه القيم في صندوق أمان بيانات الاعتماد. في أنظمة macOS وiOS، يتم تخزين هذه القيم في سلسلة مفاتيح النظام. في أجهزة Android، يتم تخزين هذه القيم في المخزن الأساسي في Android. في نظام Linux، يتم تخزين هذه القيم في ملف keychain.ini في إعدادات النظام.

لاستخدام هذه الوظيفة، يجب عليك أولاً تضمين بيان الاستيراد التالي:

import ArcGIS.AppFramework.SecureStorage 1.0

للحصول على مثال لهذه الوظيفة، راجع نموذج التطبيق المتاح في ArcGIS AppStudio أو في مستودع GitHub لنماذج AppStudio.

تخزين قيمة السلسلة

يعد مكون 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)
    }
}