如何在marklogic中检查用户权限
如何构造xquery以获取用户角色和权限(读取、更新、插入..)?我有用户的角色。无法获取用户的权限如何在marklogic中检查用户权限,marklogic,Marklogic,如何构造xquery以获取用户角色和权限(读取、更新、插入..)?我有用户的角色。无法获取用户的权限 for $u in /sec:user let $n := string($u/sec:user-name) order by $n return <user> <name>{ $n }</name> { sec:get-role-names($u/sec:role-ids/sec:role
for $u in /sec:user
let $n := string($u/sec:user-name)
order by $n
return
<user>
<name>{ $n }</name>
{ sec:get-role-names($u/sec:role-ids/sec:role-id)
!<role>{ string(.) }</role> }
</user>
$u英寸/秒的:用户
让$n:=字符串($u/sec:用户名)
以$n订购
返回
{$n}
{秒:获取角色名称($u/sec:role-id/sec:role-id)
!{string(.)}
试试这个(请注意,如果您使用的是ML9,您可以使用新的xdmp:role name函数,但以下内容也适用于ML8):
xquery版本“1.0-ml”;
导入模块命名空间sec=”http://marklogic.com/xdmp/security“at”/MarkLogic/security.xqy”;
对于$u英寸/秒:用户
让$n:=字符串($u/sec:用户名)
以$n订购
返回
{$n}
{
对于$u/sec中的$role id:role id/sec:role id
让$role name:=sec:get角色名称($role id)/fn:string()
按$role name排序
返回元素角色{$role name}
}
虽然rjrudin的回答可以帮助您找到附加到用户的角色,但它不会说明附加到角色的权限。但是不能,因为权限是由每个文档控制的
您需要一个文档或数据库uri作为起点。您可以将uri提供给一个函数,如。这将返回哪些角色对该特定uri具有哪些权限。将其与附加到感兴趣的用户的角色相交,您将知道该用户是否可以访问或更新文档
嗯 答案的另一个方面是添加到@rjrudin和@grtjn的答案中。在MarkLogic中,用户可能具有默认权限,如果未指定权限,将应用于新文档。您可以从获取这些权限。但是,常见的方法是基于文档而不是基于用户来查看权限
xquery version "1.0-ml";
import module namespace sec="http://marklogic.com/xdmp/security" at "/MarkLogic/security.xqy";
for $u in /sec:user
let $n := string($u/sec:user-name)
order by $n
return
<user>
<name>{$n}</name>
{
for $role-id in $u/sec:role-ids/sec:role-id
let $role-name := sec:get-role-names($role-id)/fn:string()
order by $role-name
return element role {$role-name}
}
</user>