共用方式為


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。 用戶端應用程式應該提供一些取得使用者同意的方法,並傳回對應至使用者決策的適當同意列舉。

範例實作

class ConsentDelegateImpl final : public mip::ConsentDelegate {
public:
  ConsentDelegateImpl() = default;
  
  virtual mip::Consent GetUserConsent(const std::string& url) override;

};

當 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;
}

不過,根據地區或商務需求和法規,在生產程式碼中,使用者可能需要出示同意選擇。