Uprość proces uwierzytelniania PostGIS z QGIS

9

W QGIS mam projekt z danymi z różnych (~ 15) baz danych PostGIS, bez poświadczeń logowania (użytkownik uwierzytelniający / pwd) zapisanych dla każdego połączenia, jak pokazano poniżej.

wprowadź opis zdjęcia tutaj

Teraz, gdy inny użytkownik otwiera projekt, on (lub ona) musi wprowadzić poświadczenia dla KAŻDEJ używanej bazy danych:

wprowadź opis zdjęcia tutaj

Bardzo obawiam się, że zgodnie z prawem żaden z moich użytkowników nie zaakceptuje wprowadzenia swoich (lub jej) danych uwierzytelniających 15 razy (ale w środowisku korporacyjnym z potencjalnie setkami użytkowników akceptacja jest kluczem do sukcesu).

Powstają więc dwa pytania:

  • czy istnieje sposób zasugerowania nazwy użytkownika zgodnie z globalną zmienną projektu user_account_namei
  • czy istnieje sposób, aby powiedzieć QGIS, aby używał poświadczeń wprowadzonych dla pierwszego połączenia db również dla innych połączeń?

Nie mogę oszacować, czy zmodyfikowanie dialogu „Wprowadź poświadczenia”, jak zaproponowano poniżej, byłoby świetną propozycją, ale czy jest to możliwe?

wprowadź opis zdjęcia tutaj

Jochen Schwarze
źródło
więc zmienia się tylko „dziedzina”, podczas gdy wszystkie inne zmienne pozostają takie same?
LaughU
tak, w rzeczywistości zmienia się tylko „dbname”. wszystko na tym samym serwerze.
Jochen Schwarze
5
PostGIS to rozszerzenie przestrzenne. Masz kilkanaście baz danych PostgreSQL . Chociaż możesz być w stanie ułożyć kludge, naprawdę powinieneś mieć jedną dużą bazę danych. Połączenie z więcej niż trzema to po prostu kiepski projekt aplikacji / bazy danych.
Vince
3
Bardzo pomocny ... Przepraszam, że mój angielski nie jest wystarczająco dobry, aby wyjaśnić, że moje pytanie nie dotyczy projektowania aplikacji / baz danych. A tak przy okazji, zawsze myślałem, że PostGIS implikuje PostgreSQL i że w QGIS ustanawiamy połączenia PostGIS (patrz zrzut ekranu powyżej). Chociaż niektórzy postgres mówią, że dobrą praktyką jest rozpowszechnianie różnych treści w różnych bazach danych tam, gdzie to możliwe, proszę pozwolić mi uczestniczyć w tym, skąd wiesz, że łączenie się z więcej niż trzema bazami danych jest złym projektem aplikacji? Proszę podać odniesienie do literatury pokrewnej! A dlaczego trzy ?!
Jochen Schwarze
1
Nie mogę wskazać literatury, ale dobrym rozwiązaniem może być zastosowanie oddzielnych schematów w tej samej bazie danych.
bugmenot123

Odpowiedzi:

7

QGIS ma wbudowany system uwierzytelniania . Krótko mówiąc, masz chronioną bazę danych ze wszystkimi danymi uwierzytelniającymi, przechowywaną w jednym qgis-auth.dbpliku, którą możesz wysłać komuś innemu, kto zna hasło główne:

 folder .qgis

Podczas tworzenia nowego połączenia PostGIS zamiast wpisywać login / hasło, możesz je wybrać qgis-auth.db(każda para login / hasło ma przyjazną nazwę).

Skonfiguruj połączenie PostGIS w QGIS z systemem uwierzytelniania

Jako przykład mam projekt QGIS, który zawiera wiele warstw. Każda warstwa stanowi połączenie ze zdalną bazą danych PostGIS. Każda baza danych ma własnego użytkownika. Kiedy otwieram ten projekt, muszę wydrukować hasło główne raz, a wszystkie warstwy (połączenia db) zaczynają działać.

Mogę wysłać ten projekt do mojego kolegi, podając mój qgis-auth.dbplik. Wcześniej mogę usunąć poświadczenia, których nie chcę udostępniać z tego pliku.

Po tym, jak mój kolega umieścił qgis-auth.dbw swoim .qgisfolderze (może wcześniej wykonać kopię zapasową własnego pliku), otwiera projekt, wprowadza hasło główne i wszystko działa.

Wprowadzasz hasło główne raz na sesję.

Jarosław
źródło