Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Profil jest klasą główną dla wszystkich operacji w zestawie MIP SDK. Przed użyciem jakiejkolwiek funkcji zestawu SDK plików, należy najpierw utworzyć obiekt FileProfile i wszystkie przyszłe operacje będą wykonywane przez profil lub inne obiekty dodane do profilu.
Istnieje kilka wymagań wstępnych dotyczących kodu, które należy spełnić przed próbą utworzenia instancji profilu.
- Obiekt
MipContextzostał utworzony i jest przechowywany w obiekcie, do którego dostęp ma obiektmip::FileProfile. -
ConsentDelegateImplimplementujemip::ConsentDelegate. - Aplikacja została zarejestrowana w identyfikatorze Entra firmy Microsoft, a identyfikator klienta jest zakodowany w plikach aplikacji lub konfiguracji.
- Klasa dziedzicząca
mip::FileProfile::Observerzostała odpowiednio zaimplementowana.
Ładowanie profilu
Po zdefiniowaniu ProfileObserver i ConsentDelegateImpl, można teraz utworzyć mip::FileProfile.
mip::FileProfile Utworzenie obiektu wymaga , aby element [mip::MipContext] miał i mip::FileProfile::Settings przechowywał wszystkie informacje o ustawieniach obiektu FileProfile.
Parametry ustawień profilu pliku
Konstruktor FileProfile::Settings akceptuje pięć parametrów wymienionych poniżej:
-
std::shared_ptr<MipContext>mip::MipContext: obiekt, który został zainicjowany do przechowywania informacji o aplikacji, ścieżki stanu itp. -
mip::CacheStorageType: definiuje sposób przechowywania stanu: w pamięci, na dysku lub na dysku z szyfrowaniem. -
std::shared_ptr<mip::ConsentDelegate>: współużytkowany wskaźnik klasymip::ConsentDelegate. -
std::shared_ptr<mip::FileProfile::Observer> observer: współdzielony wskaźnik do implementacji profiluObserver(wPolicyProfile,ProtectionProfileiFileProfile).
W poniższych przykładach pokazano, jak utworzyć obiekt profileSettings przez przechowywanie stanu lokalnie lub tylko w pamięci.
Przechowywanie stanu tylko w pamięci
mip::ApplicationInfo appInfo {clientId, "APP NAME", "1.2.3" };
std::shared_ptr<mip::MipConfiguration> mipConfiguration = std::make_shared<mip::MipConfiguration>(mAppInfo,
"mip_data",
mip::LogLevel::Trace,
false);
std::shared_ptr<mip::MipContext> mMipContext = mip::MipContext::Create(mipConfiguration);
FileProfile::Settings profileSettings(
mMipContext, // mipContext object
mip::CacheStorageType::InMemory, // use in memory storage
std::make_shared<ConsentDelegateImpl>(), // new consent delegate
std::make_shared<FileProfileObserverImpl>()); // new protection profile observer
Odczytywanie i zapisywanie ustawień profilu z i do ścieżki magazynowej na dysku
Poniższy fragment kodu poleci FileProfile zapisanie wszystkich danych stanu aplikacji w ./mip_app_data.
mip::ApplicationInfo appInfo {clientId, "APP NAME", "1.2.3" };
std::shared_ptr<mip::MipConfiguration> mipConfiguration = std::make_shared<mip::MipConfiguration>(mAppInfo,
"mip_data",
mip::LogLevel::Trace,
false);
std::shared_ptr<mip::MipContext> mMipContext = mip::MipContext::Create(mipConfiguration);
FileProfile::Settings profileSettings(
mMipContext, // mipContext object
mip::CacheStorageType::OnDisk, // use on disk storage
std::make_shared<ConsentDelegateImpl>(), // new consent delegate
std::make_shared<FileProfileObserverImpl>()); // new protection profile observer
Ładowanie profilu
Korzystając z powyższych podejść, teraz zastosuj wzorzec promise/future, aby załadować element FileProfile.
auto profilePromise = std::make_shared<std::promise<std::shared_ptr<FileProfile>>>();
auto profileFuture = profilePromise->get_future();
FileProfile::LoadAsync(profileSettings, profilePromise);
Jeśli załadowaliśmy profil i operacja zakończyła się pomyślnie, ProfileObserver::OnLoadSuccess, nasza implementacja mip::FileProfile::Observer::OnLoadSuccess jest wywoływana. Wynikowy obiekt lub wskaźnik wyjątku, a także kontekst, są przekazywane jako parametry do funkcji. Kontekst jest wskaźnikiem do std::promise, który utworzyliśmy w celu obsługi operacji asynchronicznych. Funkcja po prostu ustawia wartość obietnicy dla obiektu FileProfile, który został przekazany dla pierwszego parametru. Gdy funkcja main używa Future.get(), wynik może być przechowywany w nowym obiekcie.
//get the future value and store in profile.
auto profile = profileFuture.get();
Składanie całości
Po pełnym wdrożeniu obserwatorów i delegata do uwierzytelniania można teraz w pełni załadować profil. Poniższy fragment kodu zakłada, że wszystkie niezbędne nagłówki są już uwzględnione.
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>(mAppInfo,
"mip_data",
mip::LogLevel::Trace,
false);
std::shared_ptr<mip::MipContext> mMipContext = mip::MipContext::Create(mipConfiguration);
FileProfile::Settings profileSettings(
mMipContext, // MipContext object
mip::CacheStorageType::OnDisk, // use on disk storage
std::make_shared<ConsentDelegateImpl>(), // new consent delegate
std::make_shared<FileProfileObserverImpl>()); // new file profile observer
auto profilePromise = std::make_shared<promise<shared_ptr<FileProfile>>>();
auto profileFuture = profilePromise->get_future();
FileProfile::LoadAsync(profileSettings, profilePromise);
auto profile = profileFuture.get();
}
Wynik końcowy oznacza, że pomyślnie załadowaliśmy profil i zapisano go w obiekcie o nazwie profile.
Następne kroki
Teraz, gdy profil został dodany, następnym krokiem jest dodanie silnika do profilu.