Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les deux exemples suivants montrent comment créer l’objet profileSettings à l’aide du stockage local uniquement pour le stockage d’état ou la mémoire.
Charger un profil
Maintenant que ProtectionProfileObserverImpl est défini, utilisez-le pour instancier mip::ProtectionProfile. La création de l’objet mip::ProtectionProfile nécessite mip::ProtectionProfile::Settings.
Paramètres de ProtectionProfile::Settings
-
std::shared_ptr<MipContext>mip::MipContext: objet initialisé pour stocker les informations d’application, le chemin d’état et d’autres paramètres. -
mip::CacheStorageType: définit comment stocker l’état : en mémoire, sur disque ou sur disque et chiffré. -
std::shared_ptr<mip::ConsentDelegate>: pointeur partagé de classemip::ConsentDelegate. -
std::shared_ptr<mip::ProtectionProfile::Observer> observer: pointeur partagé vers l’implémentation du profilObserver(dansPolicyProfile,ProtectionProfileetFileProfile).
Les deux exemples suivants montrent comment créer l’objet profileSettings à l’aide du stockage local uniquement pour le stockage d’état ou la mémoire.
Stocker l’état en mémoire uniquement
mip::ApplicationInfo appInfo {clientId, "APP NAME", "1.2.3" };
std::shared_ptr<mip::MipConfiguration> mipConfiguration = std::make_shared<mip::MipConfiguration>(appInfo,
"mip_data",
mip::LogLevel::Trace,
false, mip::CacheStorageType::OnDisk);
std::shared_ptr<mip::MipContext> mMipContext = mip::MipContext::Create(mipConfiguration);
ProtectionProfile::Settings profileSettings(
mMipContext, // mipContext object
mip::CacheStorageType::InMemory, // use in memory storage
std::make_shared<ConsentDelegateImpl>(), // new consent delegate
std::make_shared<ProtectionProfileObserverImpl>()); // new protection profile observer
Lire/écrire les paramètres du profil depuis le chemin de stockage sur le disque
mip::ApplicationInfo appInfo {clientId, "APP NAME", "1.2.3" };
std::shared_ptr<mip::MipConfiguration> mipConfiguration = std::make_shared<mip::MipConfiguration>(appInfo,
"mip_data",
mip::LogLevel::Trace,
false, mip::CacheStorageType::OnDisk);
std::shared_ptr<mip::MipContext> mMipContext = mip::MipContext::Create(mipConfiguration);
ProtectionProfile::Settings profileSettings(
mMipContext, // mipContext object
mip::CacheStorageType::OnDisk, // use on disk storage
std::make_shared<ConsentDelegateImpl>(), // new consent delegate
std::make_shared<ProtectionProfileObserverImpl>()); // new protection profile
Ensuite, utilisez le modèle promesse/avenir pour charger le ProtectionProfile.
auto profilePromise = std::make_shared<std::promise<std::shared_ptr<ProtectionProfile>>>();
auto profileFuture = profilePromise->get_future();
ProtectionProfile::LoadAsync(profileSettings, profilePromise);
Si le profil se charge correctement, le SDK appelle ProtectionProfileObserverImpl::OnLoadSuccess, l’implémentation de mip::ProtectionProfile::Observer::OnLoadSuccess. Le Kit de développement logiciel (SDK) transmet l’objet ou le pointeur d’exception résultant et le contexte en tant que paramètres à la fonction. Le contexte est un pointeur vers le std::promise créé pour gérer l’opération asynchrone. La fonction définit la valeur de la promesse à l’objet ProtectionProfile (contexte). Lorsque la fonction principale utilise Future.get(), vous pouvez stocker le résultat dans un nouvel objet.
//get the future value and store in profile.
auto profile = profileFuture.get();
Synthèse
Après avoir implémenté les observateurs et le délégué d’authentification, vous pouvez charger entièrement un profil. L’extrait de code suivant suppose que tous les en-têtes nécessaires sont déjà inclus.
int main()
{
const string userName = "MyTestUser@contoso.com";
const string password = "P@ssw0rd!";
const string clientId = "MyClientId";
mip::ApplicationInfo appInfo {clientId, "APP NAME", "1.2.3" };
std::shared_ptr<mip::MipConfiguration> mipConfiguration = std::make_shared<mip::MipConfiguration>(appInfo,
"mip_data",
mip::LogLevel::Trace,
false, mip::CacheStorageType::OnDisk);
std::shared_ptr<mip::MipContext> mMipContext = mip::MipContext::Create(mipConfiguration);
ProtectionProfile::Settings profileSettings(
mMipContext, // mipContext object
mip::CacheStorageType::OnDisk, // use on disk storage
std::make_shared<ConsentDelegateImpl>(), // new consent delegate
std::make_shared<ProfileObserver>()); // new protection profile observer
auto profilePromise = std::make_shared<promise<shared_ptr<ProtectionProfile>>>();
auto profileFuture = profilePromise->get_future();
ProtectionProfile::LoadAsync(profileSettings, profilePromise);
auto profile = profileFuture.get();
}
Le code charge le profil et le stocke dans l’objet appelé profile.
Étapes suivantes
Maintenant que vous avez chargé le profil, l’étape suivante consiste à ajouter un moteur au profil.
Concepts du moteur de protection
- Explorez l’exemple C++ du Kit de développement logiciel (SDK) MIP Protection sur GitHub.