Pertanyaan Bagaimana saya dapat membuat basis data CouchDB yang dapat dibaca publik sementara telah menetapkan require_valid_user ke true?


Tujuan saya adalah untuk dapat membaca satu database tanpa harus mengotentikasi pengguna, otentikasi untuk mengedit database ini harus diperlukan. Semua database lainnya hanya boleh dibaca / ditulis untuk pengguna yang valid. Dan saya tidak ingin mengaturnya untuk setiap database yang saya buat di masa mendatang, otentikasi yang diperlukan untuk membaca / menulis yang diperlukan harus menjadi default.

Saya pikir saya bisa melakukan ini dengan pengaturan require_valid_user untuk true, tapi sekarang CouchDB selalu menanyakan nama pengguna dan kata sandi, jadi saya perlu cara untuk mengecualikan satu database. Database ini harus dapat dibaca publik dan dapat ditulisi untuk pengguna yang valid.


5
2017-07-06 16:04


asal


Jawaban:


Saya mengatasi masalah ini dengan mengautentikasi semua pengguna melalui satu basis data (yaitu / masuk). Database itu bersifat publik, dan berisi dokumen desain dengan file HTML sebagai lampiran. Pengguna disajikan file ini, mengisi kredensial mereka pada formulir, dan saya menggunakan jQuery.couch.js untuk mengotentikasi dan menyimpan cookie di browser mereka. Setelah mereka memiliki login yang valid, saya memeriksa objek userCtx untuk memeriksa peran mereka, dan mengarahkan mereka ke database yang sesuai.

Ini adalah hack, tetapi sampai CouchDB mampu melayani halaman login bukannya pesan kesalahan JSON setiap kali Anda tidak masuk ke database, itu satu-satunya metode yang dapat diandalkan yang saya temukan.

Pastikan untuk melindungi basis data masuk publik Anda dengan kunci validate_doc_update di dokumen desain, jadi tidak ada orang selain admin yang dapat menimpa apa pun di dalamnya.

Semoga ini membantu.


4
2017-07-06 21:21