【问题标题】:How to check user permissions in marklogic如何在marklogic中检查用户权限
【发布时间】:2018-02-14 04:02:45
【问题描述】:

如何构造 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>

【问题讨论】:

    标签: marklogic


    【解决方案1】:

    答案的另一个方面,添加到@rjrudin 和@grtjn 的答案。在 MarkLogic 中,用户可能具有默认权限,如果未指定权限,则会将其应用于新文档。您可以从sec:user-get-default-permissions 获得这些权限。但是,常见的方法是基于文档而不是基于用户来查看权限。

    【讨论】:

      【解决方案2】:

      虽然 rjrudin 的回答可以帮助您找到附加到用户的角色,但它不会说明附加到角色的权限。但是不能,因为权限是按文档控制的。

      您需要一个文档或数据库 uri 作为起点。您将 uri 输入到类似xdmp:document-get-permissions 的函数中。这将返回哪些角色对该特定 uri 具有哪些权限。将其与附加到感兴趣的用户的角色相交,您将知道用户是否可以访问或更新文档。

      HTH!

      【讨论】:

        【解决方案3】:

        试试这个(注意如果你在 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>
        

        【讨论】:

          猜你喜欢
          • 2021-10-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-09
          • 1970-01-01
          • 2014-01-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多