建立回呼

ProviderFactory.Callback 是一個介面, 當存取產品儲存庫需要使用者認證時,Rational® CM API 提供者會透過該介面從用戶端要求使用者認證。 另有一個針對 ClearQuest® 和 ClearCase® 所量身訂做的子介面,就是 StpProvider.StpCallback

下列 MyCallback() 類別會建立使用者鑑別資訊(網域、使用者登入名稱和密碼),然後傳回給提供者。

// 建立提供者所需的「回呼」類別。
專用 static 類別 MyCallback 實作「回呼」
{
     // 取得一個「WVCM 鑑別」物件。
     // 這個鑑別的實作
     // 回呼傳回指定的使用者名稱和密碼。

     //「提供者」呼叫 getAuthentication 來鑑別現行使用者。
     public Authentication getAuthentication(final String realm, int retryCount)
          {
          if (retryCount>0)
              throw UnsupportedOperationException("Bad credentials");
          return new Authentication()
               {
               public String loginName()  { return "<the_domain>\\<the_username>"; }
               public String password() { return "<the_password>"; }
               };
          }
}

每一個「提供者」實例都給定了一個 Provider.Callback 物件,用來取得用戶端透過該「提供者」實例存取的任何儲存庫認證。

realm 引數是一個字串,其會識別要求其鑑別的環境定義(例如:伺服器 URL 或儲存庫名稱)。字串的格式會視子提供者而有所不同,其目的是要顯示給使用者作為助記鍵。

retryCount 指定嘗試向儲存庫鑑別的次數。

在本例中並未使用 realmretryCount 引數。不過,用戶端應用程式應該將 retryCount 嘗試限制為較少次數,因為鑑別重試沒有預先設定限制次數,提供者在失敗之後會不斷地嘗試取得鑑別,除非設定 retryCount,或直到 getAuthentication 方法擲出異常狀況為止。

註: 網域可以是使用者名稱的一部分。對於 Windows® 上的伺服器,Rational ClearCase 登入會要求使用者名稱中必須指定網域。

在用戶端應用程式中,鑑別回呼可以開啟一個登入對話框,以便從使用者收集登入名稱和密碼。realm 引數可以在對話框中呈現給使用者,以顯示使用者要登入哪一個產品儲存庫(例如:伺服器 URL 或使用者資料庫)。 如果使用者對不同的產品儲存庫有不同的使用者名稱和密碼,這個選項會很有用。

在使用「提供者」時,用戶端對其發出要求的每一個不同的網域範圍都會呼叫「回呼」。關於傳給「Rational CM API 提供者」的「回呼」需求詳細資訊,請參閱 StpProvider 類別的 Javadoc 資訊。


意見