2013-07-06 47 views
5

Mục tiêu của tôi là có thể đọc một cơ sở dữ liệu mà không cần phải xác thực người dùng, cần phải xác thực để chỉnh sửa cơ sở dữ liệu này. Tất cả các cơ sở dữ liệu khác chỉ nên đọc/ghi cho người dùng hợp lệ. Và tôi không muốn phải đặt nó cho mọi cơ sở dữ liệu mà tôi tạo ra trong tương lai, yêu cầu xác thực để đọc/ghi bắt buộc phải là mặc định.Làm cách nào để tạo cơ sở dữ liệu CouchDB có thể đọc được cho công chúng khi đặt require_valid_user thành true?

Tôi nghĩ mình có thể làm điều này bằng cách đặt require_valid_user thành true, nhưng bây giờ CouchDB luôn yêu cầu tên người dùng và mật khẩu, vì vậy tôi cần một cách để loại trừ một cơ sở dữ liệu. Cơ sở dữ liệu này có thể đọc được cho công chúng và có thể ghi được cho người dùng hợp lệ.

Trả lời

4

Tôi gặp phải vấn đề này bằng cách xác thực tất cả người dùng thông qua một cơ sở dữ liệu duy nhất (tức là/đăng nhập). Cơ sở dữ liệu đó là công khai và chứa tài liệu thiết kế có tệp HTML dưới dạng tệp đính kèm. Người dùng được phục vụ tệp này, điền vào thông tin đăng nhập của họ trên biểu mẫu và tôi sử dụng jQuery.couch.js để xác thực và lưu trữ cookie trong trình duyệt của họ. Khi họ đã đăng nhập hợp lệ, tôi kiểm tra đối tượng userCtx để kiểm tra vai trò của họ và chuyển hướng họ đến cơ sở dữ liệu thích hợp.

Đó là một hack, nhưng cho đến khi CouchDB có thể phục vụ trang đăng nhập thay vì thông báo lỗi JSON bất cứ khi nào bạn không đăng nhập vào cơ sở dữ liệu, đó là phương pháp đáng tin cậy duy nhất tôi tìm thấy.

Đảm bảo bảo vệ cơ sở dữ liệu đăng nhập công khai của bạn bằng khóa validate_doc_update trong tài liệu thiết kế, do đó không ai quản trị viên có thể ghi đè bất kỳ nội dung nào trong đó.

Hy vọng điều này sẽ hữu ích.