如何为MarkLogic中的现有时态文档给角色添加权限?
问题:为MarkLogic时态文档添加读取权限失败
在带有时态功能的MarkLogic数据库中,数据已分配给特定角色权限。尝试为read-user角色授予/entities/abc.xml时态文档的读取权限,使用了xdmp:document-add-permissions函数:
xdmp:document-add-permissions( "/entities/abc.xml", (xdmp:permission("read-user", "read")) )
但触发如下错误:
1.0-ml] SEC-TEMPORALDOC: xdmp:document-add-permissions("/entities/abc.xml",
<sec:permission xmlns:sec="http://marklogic.com/xdmp/security">
sec:capability...</sec:capability>...</sec:permission>)
-- Cannot perform non-temporal operation on document in temporal collection
解决方案
时态文档不支持普通的非时态权限操作,必须使用MarkLogic提供的时态文档专用权限管理函数:xdmp:temporal-document-add-permissions。
示例代码
xdmp:temporal-document-add-permissions( "/entities/abc.xml", "your-temporal-collection-name", -- 替换为目标文档所属的时态集合名称 (xdmp:permission("read-user", "read")) )
注意事项
- 必须传入文档所属的时态集合名称,这是时态操作的必要参数,确保操作作用于正确的时态文档上下文。
- 如果需要替换而非追加权限,可以使用
xdmp:temporal-document-set-permissions函数;若要批量处理所有时态版本,需结合遍历逻辑实现。
内容的提问来源于stack exchange,提问作者Akbar aLI
相关产品推荐
相关产品推荐

