【发布时间】:2017-04-26 14:26:38
【问题描述】:
我在这里遇到了一个奇怪的情况。我正在尝试构建一个将 http get 请求发送到 MarkLogic 服务器的应用程序。它命中了执行search:search("") 的XQuery 代码。我将空查询传递给搜索,因此返回默认的相关结果。
我正在使用 Roxy 进行部署。
当我通过命令调用典型的 Roxy 部署函数时 -
ml local deploy content.
它会加载所有文档,然后当我点击 localhost:7040 时,我得到了预期的结果。到目前为止一切顺利。
现在,我重写 Roxy 的现有方法 deploy_content 并定义调用 XQuery 函数的新方法,该函数执行 xdmp:document-load() 将所有数据加载到内容数据库。这是代码sn-p -
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")。
身份验证方法=应用程序级别
【问题讨论】: