如何检查marklogic中的用户权限
How to check user permissions in 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-id)
!<role>{ string(.) }</role> }
</user>
试试这个(请注意,如果您使用的是 ML9,则可以使用新的 xdmp:role-name 函数,但下面的函数也适用于 ML8):
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>
虽然 rjrudin 的回答可以帮助您找到附加到用户的角色,但它不会说明附加到角色的权限。但是,它不能,因为权限是按文档控制的。
您需要一个文档或数据库 uri 作为起点。您将 uri 提供给像 xdmp:document-get-permissions 这样的函数。这将 return 哪些角色对该特定 uri 具有哪些权限。将其与附加到相关用户的角色相交,您将知道用户是否可以访问或更新文档。
HTH!
答案的另一个方面,添加到@rjrudin 和@grtjn 的答案中。在 MarkLogic 中,用户可能具有默认权限,如果未指定权限,将应用于新文档。您可以从 sec:user-get-default-permissions
获得这些权限。但是,常见的方法是查看基于文档的权限,而不是基于用户的权限。
如何构造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-id)
!<role>{ string(.) }</role> }
</user>
试试这个(请注意,如果您使用的是 ML9,则可以使用新的 xdmp:role-name 函数,但下面的函数也适用于 ML8):
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>
虽然 rjrudin 的回答可以帮助您找到附加到用户的角色,但它不会说明附加到角色的权限。但是,它不能,因为权限是按文档控制的。
您需要一个文档或数据库 uri 作为起点。您将 uri 提供给像 xdmp:document-get-permissions 这样的函数。这将 return 哪些角色对该特定 uri 具有哪些权限。将其与附加到相关用户的角色相交,您将知道用户是否可以访问或更新文档。
HTH!
答案的另一个方面,添加到@rjrudin 和@grtjn 的答案中。在 MarkLogic 中,用户可能具有默认权限,如果未指定权限,将应用于新文档。您可以从 sec:user-get-default-permissions
获得这些权限。但是,常见的方法是查看基于文档的权限,而不是基于用户的权限。