Упростите процесс аутентификации PostGIS из QGIS

9

В QGIS у меня есть проект с данными из различных (~ 15) баз данных PostGIS, без учетных данных для входа (аутентификация user / pwd), сохраненных для каждого из соединений, как показано ниже.

введите описание изображения здесь

Теперь, когда другой пользователь открывает проект, он (или она) должен ввести учетные данные для КАЖДОЙ используемой базы данных:

введите описание изображения здесь

Я сильно опасаюсь, что ни один из моих пользователей не сможет принять его (или ее) учетные данные 15 раз (но в корпоративной среде с потенциально сотнями пользователей принятие является ключом к успеху).

Поэтому у меня возникает два вопроса:

  • Есть ли способ предложить имя пользователя в соответствии с глобальной переменной проекта user_account_nameи
  • Есть ли способ указать QGIS использовать учетные данные, введенные для первого соединения с БД, также для любого другого соединения?

Я не могу оценить, будет ли полезно изменить диалог «Ввод учетных данных», как это предлагается ниже, но возможно ли это?

введите описание изображения здесь

Йохен Шварце
источник
так что меняется только «Царство», а все остальные переменные остаются прежними?
Смейся
да, внутри реального меняется только «имя_базы». это все на одном сервере.
Йохен Шварц
5
PostGIS - это пространственное расширение. У вас есть более десятка баз данных PostgreSQL . В то время как вы могли бы собирать вместе кучу, у вас действительно должна быть одна большая база данных. Подключение более чем к трем - это просто плохой дизайн приложения / базы данных.
Винс
3
Очень печально ... Извините, что мой английский недостаточно хорош, чтобы прояснить, что мой вопрос не о разработке приложений / баз данных. И, кстати, я всегда думал, что PostGIS подразумевает PostgreSQL, и что в QGIS мы устанавливаем соединения PostGIS (см. Скриншот выше). Хотя некоторые специалисты Postgres говорят, что это хорошая практика - по возможности распространять различный контент в разных базах данных, позвольте мне поучаствовать в том, откуда вы знаете, что подключение к более чем трём базам данных - плохой дизайн приложения? Пожалуйста, предоставьте ссылку на соответствующую литературу! А почему три ?!
Йохен Шварц
1
Я не могу указать вам литературу, но хорошим решением может быть использование отдельных схем в одной базе данных.
bugmenot123

Ответы:

7

QGIS имеет встроенную систему аутентификации . Проще говоря, у вас есть защищенная база данных со всеми вашими учетными данными, хранящимися в одном qgis-auth.dbфайле, которую вы можете отправить кому-то еще, кто знает главный пароль:

 папка .qgis

Когда вы создаете какое-то новое соединение PostGIS, вместо ввода логина / пароля вы можете выбрать его qgis-auth.db(каждая пара логин / пароль имеет понятное имя).

Установите соединение PostGIS в QGIS с системой аутентификации

В качестве примера у меня есть проект QGIS, который содержит много слоев. Каждый слой представляет собой соединение с удаленной базой данных PostGIS. У каждой базы данных есть свой пользователь. Когда я открываю этот проект, мне нужно один раз напечатать мастер-пароль, и все слои (соединения БД) начинают работать.

Я могу отправить этот проект моему коллеге, предоставив мой qgis-auth.dbфайл. Предварительно я могу удалить из этого файла некоторые учетные данные, которыми не хочу делиться.

После того, как мой коллега положил qgis-auth.dbв свою .qgisпапку (он может сделать резервную копию своего собственного файла раньше), он открывает проект, вводит мастер-пароль и все работает.

Вы вводите мастер-пароль один раз за сеанс.

Ярослав
источник