Xquery eXist db比system更安全:as-user()访问帐户元数据

Xquery eXist db比system更安全:as-user()访问帐户元数据,xquery,exist-db,Xquery,Exist Db,在eXist 4.7中,我有一个网页,从guest到经过身份验证的用户,所有访问者都可以访问该网页。这些页面由具有编辑器用户ID的XML文档生成。在发布这些ID时,我想将它们转换为安全管理器帐户元数据中的全名 我在模块user.xql中有一个名为user:user-info($userid为xs:string)的函数,用于检索所需的数据 在我的模块collection.xql中,函数collection:content输出页面的HTML。目前我使用system:as-user()获取信息。简单地

在eXist 4.7中,我有一个网页,从
guest
到经过身份验证的用户,所有访问者都可以访问该网页。这些页面由具有编辑器用户ID的XML文档生成。在发布这些ID时,我想将它们转换为
安全管理器帐户元数据中的全名

我在模块
user.xql
中有一个名为
user:user-info($userid为xs:string)
的函数,用于检索所需的数据

在我的模块
collection.xql
中,函数
collection:content
输出页面的HTML。目前我使用
system:as-user()
获取信息。简单地说,它是这样的(其中,
$globalvar:ADMIN\u PW\u KEY
是ADMIN password变量):

这很好,只是我不习惯将管理员密码存储在文件中

我尝试为每个设置
user.xql
模块上的setuid/setgid权限,最多包括所有读/写/执行权限,并将所有组添加到具有完全权限的ACL

但有报道说

  You must be a DBA to retrieve metadata about other users, 
  otherwise you may only retrieve metadata about yourself.
是否有其他安全的解决方案来访问
帐户元数据


非常感谢。

您是如何调用
用户.xql
的?如果将其用作库模块,则会忽略set uid/set gid。set-uid和set-gid仅在调用主模块时使用。作为导入模块名称空间user=“/db/apps/foo/modules/user”在“/db/apps/foo/modules/user.xql”处调用即作为库模块Okay,则setuid/setgid将不适用。你能把它分解成一系列由http调用链接的主要模块吗?是的,我必须重新考虑一下这个模块的策略。显然这是可以做到的!您是如何调用
用户.xql
?如果将其用作库模块,则会忽略set uid/set gid。set-uid和set-gid仅在调用主模块时使用。作为导入模块名称空间user=“/db/apps/foo/modules/user”在“/db/apps/foo/modules/user.xql”处调用即作为库模块Okay,则setuid/setgid将不适用。你能把它分解成一系列由http调用链接的主要模块吗?是的,我必须重新考虑一下这个模块的策略。显然这是可以做到的!
  You must be a DBA to retrieve metadata about other users, 
  otherwise you may only retrieve metadata about yourself.