跳轉到內容

XQuery/釋出到 Subversion

來自華夏公益教科書,開放世界開放書籍

在內容管理系統上有一個按鈕,可以將檔案複製到遠端 Subversion 儲存庫。

在標準 Apache 伺服器上配置 Subversion 儲存庫,該伺服器配置了 SSL 證書。這將加密內部網路系統和遠端 Subversion 伺服器之間的所有通訊。我們還將身份驗證設定為基本身份驗證。

Apache 配置檔案

[編輯 | 編輯原始碼]
<Location "/testsvn/">
  DAV svn
  AuthName "svntest"
  SVNParentPath /Library/Subversion/RepositoryTest
  SVNAutoversioning on
  <Limit GET HEAD OPTIONS CONNECT POST PROPFIND PUT DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
     Require user  testuser1  testuser2  testuser3
  </Limit>
  AuthType Basic
</Location>

用於基本身份驗證的 HTTP Put 函式

[編輯 | 編輯原始碼]

HTTP 基本身份驗證要求使用者將使用者名稱和密碼與冒號分隔連線起來,然後對該字串進行 base64 編碼。然後將此字串傳送到 HTTP 標頭,鍵為“Authorization”。HTTP 標頭必須如下所示

  Authorization = Basic BASE64-ENCODED-USER-PASSWORD

以下 XQuery 函式執行此過程。

declare function http:put-basic-auth($url, $content, $username, $password, $in-header) as node(){
  let $credentials := concat($username, ':', $password)
  let $encode := util:base64-encode($credentials)
  let $value := concat('Basic ', $encode)
  let $new-headers :=
  <headers>
     {$in-header/header}
     <header name="Authorization" value="{$value}"/>
  </headers>
  let $response := httpclient:put($url, $content, false(), $new-headers)
return $response
};

要放置檔案,請將 URL 放置在正確的 content 區域中,以及要插入的內容,使用者名稱和密碼,以及

監控 HTTP 客戶端庫

[編輯 | 編輯原始碼]

如果您沒有正確的工具,除錯身份驗證協議非常困難。一個有用的工具是為 httpclient 模組啟用日誌記錄。

  <category name="org.apache.commons.httpclient" additivity="false">
        <priority value="debug"/>
        <appender-ref ref="console"/>
    </category>

參考資料

[編輯 | 編輯原始碼]

維基百科關於基本訪問身份驗證的條目

華夏公益教科書