eXist-DB рекомендует практиковать хранение информации о пользователе (кроме user / pword)? - PullRequest
2 голосов
/ 12 июня 2019

(eXist 4.4) Я работаю над созданием страницы настроек пользователя, чтобы администратор мог создавать пользователей сайта. Я хочу хранить информацию за пределами имени пользователя / пароля / разрешений (например, электронная почта, языковые настройки и т. Д.). Вопрос в том, где хранить информацию о пользователях помимо того, что хранится в коллекции / db / system / security / Существовать / учетные записи: есть ли рекомендуемые методы обеспечения безопасности для этого? Есть ли причина не просто добавлять новые элементы в XML-файлы профиля пользователя, которые хранятся в / db / system / security / exist / accounts?

1 Ответ

3 голосов
/ 13 июня 2019

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 для исходного кода.

...