Vereinfachen Sie den PostGIS-Authentifizierungsprozess in QGIS

9

In QGIS habe ich ein Projekt mit Daten aus verschiedenen (~ 15) PostGIS-Datenbanken, in denen keine Anmeldeinformationen (Authentifizierungsbenutzer / pwd) für jede der Verbindungen gespeichert sind, wie unten gezeigt.

Geben Sie hier die Bildbeschreibung ein

Wenn ein anderer Benutzer das Projekt öffnet, muss er (oder sie) Anmeldeinformationen für JEDE verwendete Datenbank eingeben:

Geben Sie hier die Bildbeschreibung ein

Ich befürchte nachdrücklich, dass zu Recht keiner meiner Benutzer die Eingabe seiner (oder ihrer) Anmeldeinformationen 15 Mal akzeptiert (in einer Unternehmensumgebung mit möglicherweise Hunderten von Benutzern ist die Akzeptanz jedoch der Schlüssel zum Erfolg).

Für mich stellen sich also zwei Fragen:

  • Gibt es eine Möglichkeit, den Benutzernamen gemäß der globalen Projektvariablen user_account_nameund vorzuschlagen?
  • Gibt es eine Möglichkeit, QGIS anzuweisen, die für die erste Datenbankverbindung eingegebenen Anmeldeinformationen auch für andere Verbindungen zu verwenden?

Ich kann nicht abschätzen, ob es sehr sinnvoll wäre, den unten vorgeschlagenen Dialog "Anmeldeinformationen eingeben" zu ändern. Ist dies jedoch möglich?

Geben Sie hier die Bildbeschreibung ein

Jochen Schwarze
quelle
Also ändert sich nur das "Reich", während alle anderen Variablen gleich bleiben?
LaughU
Ja, innerhalb des Real ändert sich nur der 'Datenbankname'. Es ist alles auf dem gleichen Server.
Jochen Schwarze
5
PostGIS ist die räumliche Erweiterung. Sie haben über ein Dutzend PostgreSQL- Datenbanken. Während Sie vielleicht in der Lage sind, einen Kludge zusammenzuschustern, sollten Sie wirklich eine große Datenbank haben. Das Herstellen einer Verbindung zu mehr als drei ist nur ein schlechtes Anwendungs- / Datenbankdesign.
Vince
3
Sehr hilfreich ... Entschuldigung, dass mein Englisch nicht gut genug ist, um klar zu machen, dass es bei meiner Frage nicht um das Design von Anwendungen / Datenbanken geht. Übrigens dachte ich immer, dass PostGIS PostgreSQL impliziert und dass wir in QGIS PostGIS-Verbindungen herstellen ( siehe Abbildung oben). Während einige Postgres-Leute sagen, dass es eine gute Praxis ist, unterschiedliche Inhalte in verschiedenen Datenbanken zu verteilen, lassen Sie mich bitte daran teilnehmen, von wo aus Sie wissen, dass das Herstellen einer Verbindung zu mehr als drei Datenbanken ein schlechtes Anwendungsdesign ist. Bitte geben Sie die entsprechende Literaturhinweis an! Und warum drei?!
Jochen Schwarze
1
Ich kann Sie nicht auf Literatur verweisen, aber eine gute Lösung könnte darin bestehen, separate Schemata in derselben Datenbank zu verwenden.
Bugmenot123

Antworten:

7

QGIS verfügt über ein integriertes Authentifizierungssystem . Einfach gesagt, Sie haben eine geschützte Datenbank mit all Ihren Anmeldeinformationen, die in einer qgis-auth.dbDatei gespeichert sind und die Sie an eine andere Person senden können, die ein Hauptkennwort kennt:

 .qgis Ordner

Wenn Sie eine neue PostGIS-Verbindung erstellen, können Sie anstelle der Anmeldung / des Kennworts eine auswählen qgis-auth.db(jedes Anmelde- / Kennwortpaar hat einen benutzerfreundlichen Namen).

Richten Sie eine PostGIS-Verbindung in QGIS mit dem Authentifizierungssystem ein

Als Beispiel habe ich ein QGIS-Projekt, das viele Ebenen enthält. Jede Schicht ist eine Verbindung zu einer entfernten PostGIS-Datenbank. Jede Datenbank hat einen eigenen Benutzer. Wenn ich dieses Projekt öffne, muss ich einmal ein Hauptkennwort drucken, und alle Ebenen (Datenbankverbindungen) beginnen zu funktionieren.

Ich kann dieses Projekt an meinen Kollegen senden und meine qgis-auth.dbDatei bereitstellen . Vorher kann ich einige Anmeldeinformationen, die ich nicht freigeben möchte, aus dieser Datei löschen.

Nachdem mein Kollege qgis-auth.dbseinen .qgisOrdner abgelegt hat (er kann zuvor eine Sicherungskopie seiner eigenen Datei erstellen), öffnet er das Projekt, gibt das Hauptkennwort ein und alles funktioniert.

Sie geben einmal pro Sitzung ein Hauptkennwort ein.

Jaroslaw
quelle