我这里有一个奇怪的情况。我正在尝试构建一个将 http get 请求发送到 MarkLogic 服务器的应用程序。它命中了执行的 XQuery 代码search:search("")
。我将空查询传递给搜索,因此返回默认的相关结果。
我正在使用 Roxy 进行部署。当我通过命令调用典型的 Roxy 部署函数时 -
ml local deploy content.
它加载了所有文档,然后当我点击 localhost:7040 时,我得到了预期的结果。到目前为止,一切都很好。
现在,我重写 Roxy 的现有方法 deploy_content 并定义调用 XQuery 函数的新方法,该函数执行xdmp:document-load()
将所有数据加载到内容数据库。这是代码片段 -
declare function loadTS:load($path) {
let $result :=
for $d in xdmp:filesystem-directory($path)//dir:entry
let $log := xdmp:log(fn:concat("$d-->",xdmp:describe($d)))
return xdmp:document-load($d//dir:pathname,
<options xmlns="xdmp:document-load">
<uri>{fn:concat("/",$d//dir:filename)}</uri>
<permissions>{xdmp:default-permissions()}</permissions>
<format>xml</format>
<collections>
<collection>all</collection>
</collections>
</options>)
return $result
};
现在,当我点击应用程序时,我得到 0 结果,而相同的代码在查询控制台中运行良好。我认为这与角色和权限概念有关,因为当我从 roxy 向新创建的用户提供管理员角色时,我得到了预期的结果。我不想为稍后将使用我的应用程序的默认用户提供管理员角色。那么我需要在角色、权限和身份验证方面进行哪些修改才能解决我的问题?
注意:当我点击 localhost:7040 时,它不会要求进行身份验证。
ml.app-role:xyz-role
是否有一个功能可以获取该用户角色下的所有默认权限。
这是用于应用服务器的用户,因为它更像是普通安装。
用于查询控制台的用户是 admin。
我将命令运行xdmp:document-get-permissions()
到加载文档之一,但它返回空序列。
xdmp:document-get-permissions("/a-ha+Take-on-Me.xml")
.
身份验证方法=应用程序级别