Sederhanakan proses otentikasi PostGIS dari QGIS

9

Di QGIS saya memiliki proyek dengan data dari berbagai (~ 15) database PostGIS, tanpa kredensial login (pengguna otentikasi / pwd) disimpan untuk setiap koneksi seperti yang ditunjukkan di bawah ini.

masukkan deskripsi gambar di sini

Sekarang ketika pengguna lain membuka proyek, ia harus memasukkan kredensial untuk setiap database yang digunakan:

masukkan deskripsi gambar di sini

Saya sangat takut bahwa secara sah tidak ada pengguna saya yang akan menerima untuk memasukkan kredensinya 15 kali (tetapi dalam lingkungan perusahaan dengan pengguna yang berpotensi 100-an, penerimaan adalah kunci keberhasilan).

Jadi dua pertanyaan muncul untuk saya:

  • apakah ada cara untuk menyarankan Nama Pengguna sesuai dengan variabel proyek global user_account_namedan
  • apakah ada cara untuk memberi tahu QGIS untuk menggunakan kredensial yang dimasukkan untuk koneksi db pertama untuk koneksi lain juga?

Saya tidak dapat memperkirakan apakah akan banyak mengubah dialog 'Masukkan Kredensial' seperti yang diusulkan di bawah ini, tetapi apakah ini mungkin?

masukkan deskripsi gambar di sini

Jochen Schwarze
sumber
jadi hanya "Realm" yang berubah sementara semua variabel lainnya tetap sama?
LaughU
ya, dalam yang nyata hanya 'dbname' yang berubah. semuanya ada di server yang sama.
Jochen Schwarze
5
PostGIS adalah ekstensi spasial. Anda memiliki lebih dari selusin database PostgreSQL . Meskipun Anda mungkin dapat membuat kludge bersama-sama, Anda benar-benar harus memiliki satu database besar. Menghubungkan ke lebih dari tiga hanyalah aplikasi / desain database yang buruk.
Vince
3
Sangat heplful ... Maaf bahasa inggris saya kurang bagus untuk menjelaskan bahwa pertanyaan saya bukan tentang aplikasi / desain database. Dan omong-omong, saya selalu berpikir bahwa PostGIS mengimplikasikan PostgreSQL, dan bahwa dalam QGIS kami membuat koneksi PostGIS (cp. Screenshot di atas). Sementara beberapa orang postgres mengatakan bahwa itu adalah praktik yang baik untuk mendistribusikan konten yang berbeda di database yang berbeda jika memungkinkan, tolong beri tahu saya dari mana Anda tahu bahwa menghubungkan ke lebih dari tiga database adalah desain aplikasi yang buruk? Mohon berikan referensi literatur terkait! Dan mengapa tiga ?!
Jochen Schwarze
1
Saya tidak bisa mengarahkan Anda ke literatur, tetapi solusi yang baik bisa menggunakan skema terpisah dalam database yang sama.
bugmenot123

Jawaban:

7

QGIS memiliki Sistem Otentikasi bawaan . Secara sederhana, Anda memiliki basis data yang dilindungi dengan semua kredensial Anda, disimpan dalam satu qgis-auth.dbfile, yang dapat Anda kirim ke orang lain, yang mengetahui kata sandi utama:

 folder .qgis

Saat Anda membuat beberapa koneksi PostGIS baru, alih-alih mengetik login / kata sandi Anda, Anda dapat memilihnya qgis-auth.db(setiap pasangan login / kata sandi memiliki nama yang ramah pengguna).

Atur koneksi PostGIS di QGIS dengan Sistem Otentikasi

Sebagai contoh, saya punya proyek QGIS yang berisi banyak lapisan. Setiap lapisan adalah koneksi ke basis data PostGIS jarak jauh. Setiap basis data memiliki penggunanya sendiri. Ketika saya membuka proyek ini, saya harus mencetak kata sandi utama sekali, dan semua lapisan (koneksi db) mulai berfungsi.

Saya dapat mengirim proyek ini ke kolega saya, memberikan qgis-auth.dbfile saya . Sebelumnya saya dapat menghapus beberapa kredensial yang tidak ingin saya bagikan dari file ini.

Setelah kolega saya meletakkan qgis-auth.dbke .qgisfoldernya (ia mungkin membuat cadangan file sendiri sebelumnya), ia membuka proyek, memasukkan kata sandi utama dan semuanya berfungsi.

Anda memasukkan kata sandi master sekali per sesi.

Yaroslav
sumber