跳转到内容

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>

参考资料

[编辑 | 编辑源代码]

维基百科关于基本访问身份验证的条目

华夏公益教科书