XQuery/发布到 Subversion
外观
< XQuery
在内容管理系统上有一个按钮,可以将文件复制到远程 Subversion 存储库。
在标准 Apache 服务器上配置 Subversion 存储库,该服务器配置了 SSL 证书。这将加密内部网络系统和远程 Subversion 服务器之间的所有通信。我们还将身份验证设置为基本身份验证。
<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 基本身份验证要求用户将用户名和密码与冒号分隔连接起来,然后对该字符串进行 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 区域中,以及要插入的内容,用户名和密码,以及
如果您没有正确的工具,调试身份验证协议非常困难。一个有用的工具是为 httpclient 模块启用日志记录。
<category name="org.apache.commons.httpclient" additivity="false">
<priority value="debug"/>
<appender-ref ref="console"/>
</category>