Microsoft 資訊保護 SDK - 同意
mip::Consent
列舉類別會實作便於使用的方法,允許應用程式開發人員根據 SDK 所存取的端點提供自訂同意體驗。 通知可以通知使用者將收集的資料、如何移除資料,或法律或合規性政策所需的任何其他資訊。 一旦使用者授與同意,應用程式就可以繼續。 只有在嘗試存取 Active Directory Rights Management Services (AD RMS) 時,才會呼叫此委派。 存取雲端服務時不會呼叫它。 如果您的應用程式不支援 AD RMS,您可以實作一律傳回 的 Consent.AcceptAlways
委派。
實作
同意是藉由擴充 mip::Consent
基類並實作 來傳回其中 mip::Consent
一個列舉值來實作 GetUserConsent
。
衍生自 mip::Consent
的物件會 mip::FileProfile::Settings
傳入 或 mip::ProtectionProfile::Settings
建構函式。
當使用者執行需要同意的作業時,SDK 會呼叫 GetUserConsent
方法,並傳入目的地 URL 做為 參數。 此方法會實作向使用者顯示必要資訊,讓他們決定他們是否同意使用服務。
同意選項
- AcceptAlways :同意並記住決策。
- 接受 :同意一次。
- 拒絕 :不同意。
當 SDK 要求使用者同意此方法時,用戶端應用程式應該向使用者顯示 URL。 用戶端應用程式應該提供一些取得使用者同意的方法,並傳回對應至使用者決策的適當同意列舉。
範例實作
consent_delegate_impl.h
class ConsentDelegateImpl final : public mip::ConsentDelegate {
public:
ConsentDelegateImpl() = default;
virtual mip::Consent GetUserConsent(const std::string& url) override;
};
consent_delegate_impl.cpp
當 SDK 需要同意時, GetUserConsent
SDK 會呼叫 方法,並以參數的形式傳入 URL。 在下列範例中,系統會通知使用者 SDK 會連線到該提供的 URL,並提供命令列上的選項給使用者。 根據使用者選擇,使用者接受或拒絕同意,並將該同意傳遞給 SDK。 如果使用者拒絕同意,應用程式將會擲回例外狀況,而且不會對保護服務進行呼叫。
Consent ConsentDelegateImpl::GetUserConsent(const string& url) {
//Print the consent URL, ask user to choose
std::cout << "SDK will connect to: " << url << std::endl;
std::cout << "1) Accept Always" << std::endl;
std::cout << "2) Accept" << std::endl;
std::cout << "3) Reject" << std::endl;
std::cout << "Select an option: ";
char input;
std::cin >> input;
switch (input)
{
case '1':
return Consent::AcceptAlways;
break;
case '2':
return Consent::Accept;
break;
case '3':
return Consent::Reject;
break;
default:
return Consent::Reject;
}
}
在測試或開發中,或只使用雲端式服務時,可以實作基本概念 ConsentDelegate
。
Consent ConsentDelegateImpl::GetUserConsent(const string& url) {
return Consent::AcceptAlways;
}
不過,根據地區或商務需求和法規,在生產程式碼中,使用者可能需要出示同意選擇。