2011-09-07 56 views
7

Tôi đang nghĩ đến việc sử dụng MongoDB làm cơ sở dữ liệu chính của mình. Tuy nhiên, ứng dụng của tôi là đầy đủ trong JavaScript và tôi muốn sử dụng REST API, phía máy khách.Xác thực API REST MongoDB

Tôi vẫn không thể hiểu cơ chế bảo mật nào có thể sử dụng để thực hiện cuộc gọi JS tới cơ sở dữ liệu mà không tiết lộ tất cả dữ liệu cho tất cả người dùng .

Vui lòng tư vấn về vấn đề này.

Kính trọng, Donald

+0

@Brain, làm thế nào là theo bất kỳ cách nào liên quan đến câu hỏi này? AJAX chỉ là một cách để nói chuyện không đồng bộ với các dịch vụ khác và không liên quan gì đến giao diện REST MongoDB hoặc câu hỏi. –

Trả lời

5

Trước hết, bạn có thể bật auth cơ sở dữ liệu mà sẽ làm cho giao diện REST yêu cầu xác thực nếu kết nối với một máy từ xa.

Điều đó nói rằng, đó là một ý tưởng rất tồi để hiển thị cơ sở dữ liệu của bạn như bạn đề xuất. Xây dựng một lớp trừu tượng bền vững trong một công nghệ máy chủ mà bạn cảm thấy thoải mái với (node.js chẳng hạn) và đặt tất cả các ràng buộc bảo mật và xác thực ở đó. Những lợi thế rất nhiều:

  • Bạn có thể giữ cho API của mình ổn định ngay cả khi thay đổi MongoDB. Bạn thậm chí có thể thay thế nó bằng một giải pháp kiên trì khác nếu nhu cầu phát sinh trong hầu hết các trường hợp.
  • Bạn có thể giới hạn tải mà một khách hàng có thể đặt vào cơ sở dữ liệu của bạn. Nếu bạn tiếp xúc trực tiếp với cơ sở dữ liệu, có rất ít việc bạn có thể làm để tránh những người làm các truy vấn tốn kém hoặc thậm chí có khả năng viết sai.
  • Bạn có thể thường xuyên lưu vào bộ nhớ đệm và tối ưu hóa ứng dụng thông minh mà không thể thực hiện được nếu mọi khách hàng truy cập trực tiếp cơ sở dữ liệu (điều này phụ thuộc một chút vào ứng dụng được đề cập).
+0

Tại sao nó không an toàn? Nó khác với CouchDB đã đi kèm với giao diện REST như thế nào? – BluePython

+0

Giao diện REST không an toàn (mặc dù có vấn đề về hiệu suất tiềm năng) nhưng lộ diện giao diện cơ sở dữ liệu (RESTful hoặc khác) trực tiếp cho khách hàng hầu như luôn giới thiệu rủi ro. –

2

Kiểm tra Sleepy.Mongoose, đây là giao diện REST API cho MongoDB. Tôi đã không thử nó, nhưng nó xuất hiện để hỗ trợ xác thực MongoDB tiêu chuẩn.

+1

Tại sao mọi người trải qua tất cả những rắc rối thay vì sử dụng CouchDB hoặc tại sao MongoDB không đi kèm với giao diện REST API chuẩn? Những lợi ích của việc không làm như vậy là gì? – BluePython

1

MongoLab có cơ sở dữ liệu MongoDB lưu trữ với API REST có thể được truy cập phía máy khách, chúng thậm chí thông qua một số ví dụ dựa trên jQuery trong tài liệu hỗ trợ của chúng. Điều đó nói rằng, Remon là đúng rằng bạn hy sinh bất kỳ bảo mật bằng cách làm như vậy bởi vì bạn đang làm cho khóa API của bạn công khai.

0

RESTHeart là API Web cho MongoDB.

Nó cung cấp ủy quyền và xác thực cấp ứng dụng.

Kiểm tra phần tài liệu security.

Ngoài ra một số ứng dụng ví dụ có sẵn trên github:

  • blog example (sử dụng AngularJs qua dịch vụ $ HTPP)
  • notes example (sử dụng AngularJs qua dịch vụ Restangular)