eXist-DB 推荐的存储用户信息的做法(超出用户/密码)?

标签 exist-db

(eXist 4.4) 我正在创建一个用户设置页面,以允许管理员创建站点用户。我想存储用户名/密码/权限之外的信息(例如电子邮件、语言首选项等)。问题是在/db/system/security/exist/accounts 集合中保存的用户信息之外,在哪里存储用户信息:是否有推荐的安全实践?是否有理由不简单地将新元素添加到保存在/db/system/security/exist/accounts 中的用户配置文件 .xml 文件中?

最佳答案

eXist 支持来自 axschema.org 架构的多个帐户元数据属性。例如,给定以下形式的 $user 记录:

<user>
    <friendly-name/>
    <first-name/>
    <last-name/>
    <full-name/>
    <email/>
    <country/>
    <language/>
    <timezone/>
</user>

您可以通过以下方式设置这些属性:

sm:set-account-metadata($username, xs:anyURI("http://axschema.org/namePerson"), $user/full-name),
sm:set-account-metadata($username, xs:anyURI("http://axschema.org/namePerson/first"), $user/first-name),
sm:set-account-metadata($username, xs:anyURI("http://axschema.org/namePerson/last"), $user/last-name),
sm:set-account-metadata($username, xs:anyURI("http://axschema.org/namePerson/friendly"), $user/preferred-name),
sm:set-account-metadata($username, xs:anyURI("http://axschema.org/contact/email"), $user/email),
sm:set-account-metadata($username, xs:anyURI("http://axschema.org/contact/country/home"), $user/country),
sm:set-account-metadata($username, xs:anyURI("http://axschema.org/pref/language"), $user/language),
sm:set-account-metadata($username, xs:anyURI("http://axschema.org/pref/timezone"), $user/timezone)

然后您可以使用 sm:get-account-metadata() 函数检索这些属性。

参见http://exist-db.org/exist/apps/fundocs/index.html?q=account-metadata获取相关功能文档。另请参阅https://github.com/eXist-db/exist/blob/develop/exist-core/src/main/java/org/exist/security/AXSchemaType.java获取源代码。

关于eXist-DB 推荐的存储用户信息的做法(超出用户/密码)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56568327/

相关文章:

xquery - 在什么时候加载变量?

xquery - eXist-db - 包含模板导致基数不匹配,拒绝作为二进制资源

jquery - 从existDB请求JSON

xquery - 我如何编写一个 XQuery 来测试正在使用的 XQuery 版本?

javascript - 登录/注销后强制所有页面访问刷新/清除缓存

linux - 使用 RestXQ 服务打开的文件过多

xml - 在 XQuery 中搜索两个图形节点之间的路径

xquery - & 在 xquery concat 中的使用

xml - 用于声明命名空间的 XQuery 语法 : [XPST0081] No namespace declared for 'text:p'

参数的存在数据库基数