2011-03-14 16 views
8

TłoZarejestruj Użytkownik w Couchapp/CouchDB przez jquery.couch.js lub inaczej

Teraz staram się zbudować aplikację z couchdb/couchapp że uporczywe i przechowywania istotnych informacji od użytkownika, i utknąłem na kroki wymagane do rejestracji użytkownika z couchapp.

Zasadniczo chcę mieć prosty formularz rejestracji, za pomocą którego użytkownicy mogą zarejestrować konto do korzystania z mojej aplikacji. Wymagałoby to utworzenia nowego użytkownika w bazie danych couchdb _users oraz utworzenia nowej bazy danych, z nowym użytkownikiem przypisanym do roli administratora bazy danych.

Wszystko to wymaga danych logowania administratora serwera.

Najlepiej byłoby móc wykonać połączenie za pomocą jednej z funkcji jquery.couch.js, ale nie wydaje się, że jest to bezpieczny sposób. (Czy jest tam ??)

Pytanie

Jaki jest najbardziej wydajny jeszcze bezpieczny sposób odciążyć to zadanie oprogramowania warstwy średniej lub w inny sposób?

Przez sprawność rozumie się konieczność najmniejszej ilości kroków dla użytkownika, niekoniecznie najmniej kłopotów.

Od tej pory skonfigurowałem oddzielny serwer node.js, który odbiera żądania rejestracji. Moje poświadczenia administratora serwera couchDB są przechowywane jako przypuszczalne prywatne zmienne w pliku węzła server.js. Później zwrócę dowolne żądanie utworzenia bazy danych do couchDB, używając couch-client.

Czy przeskakuję tutaj zbyt wiele (potencjalnie niepewnych) obręcze? Czy istnieje lepszy sposób na zapewnienie bezpiecznego procesu rejestracji?

Dzięki.

Odpowiedz

3

Użyłem node.js w sposób, który opisujesz. Nie różni się to od używania oprogramowania pośredniego, takiego jak PHP, do komunikowania się z MySQL. Tak solidne, jak API dla CouchDB, nadal dobrym pomysłem jest użycie czegoś innego w środku, dzięki czemu możesz wyświetlać treści bez potrzeby używania AJAX. (szczególnie jeśli potrzebujesz czegoś bardziej złożonego niż pojedyncza encja lub lista podmiotów)

Jeśli zdecydujesz się kontynuować z bezpośrednim CouchApp, będziesz musiał użyć serwera proxy, aby przekierować żądania HTTPS do samego serwera CouchDB . (Nginx i Apache są typowymi przykładami tego przypadku użycia). Jeśli nie możesz tego użyć, na stronie wiki jest article o dodawaniu warstwy szyfrowania do strony klienta. Dowiedziałem się na wiki, że natywna obsługa SSL zostanie dodana z wersją 1.1 (i jest obsługiwana w pniu źródłowym)

(Btw, wszystkie te artykuły natknąłem się przez "How-to Guides" na Wiki CouchDB)

+0

Świetne, aby uzyskać pewności. Mam już podłączoną tapczan do Nginx, ale jakoś tęskniłem za rodzimym suportem SSL. = p –

+1

Od czerwca 2011, Couchdb 1.1 ma natywną obsługę SSL –

4

Użytkownik admin jest wymagany do utworzenia bazy danych i przypisania administratorów baz danych.

Odpowiedź Dominika jest świetna. Alternatywą jest jednak utrzymanie bezpośredniej architektury couchapp i uruchomienie kodu administratora zewnętrzny poza łańcuchem kanałów użytkownika.

Na przykład w NodeJS połącz się z CouchDB jako administrator. Zapytanie /_users/_changes?feed=continuous&include_docs=true.Otrzymasz zdarzenie danych w czasie rzeczywistym, gdy użytkownicy zostaną utworzeni. Gdy zobaczysz nowego użytkownika, utwórz bazę danych i przypisz ją jako admin.

Kod klienta może odpytać o nową bazę danych. Lub klient może również wysłać zapytanie /_users za pośrednictwem kanału COMET _changes. Tak czy inaczej, gdy przeglądarka wie, że konto jest skonfigurowane, możesz pokazać je użytkownikowi w interfejsie.

Serwery proxy (architektura trójwarstwowa) są świetne. Nic nie mogą zrobić. Jednak często preferuję architekturę "CouchDB z zewnętrznym agentem" z dwóch powodów:

  1. To jest proste. Jest jeden serwer WWW. Użytkownicy łączą się z CouchDB. Podłączasz się do CouchDB. Wszystko jest w bazie danych. Występuje mniej problemów z konfiguracją i konserwacją.
  2. Jest elastyczny. Możesz napisać klienta zewnętrznego w dowolnym języku, uruchamiając go z dowolnego serwera. Piszesz jedną dużą aplikację do zrobienia wszystkiego lub wiele małych aplikacji, aby skupić się na jednym zadaniu (np. Tworzenie nowych baz danych, wysyłanie wiadomości e-mail do utraconych haseł, powiadamianie, jeśli baza danych jest zbyt duża itp.).
+1

Teraz brzmi jak coś do wypróbowania. Dzięki! Na pewno przyjrzymy się funkcjonalności [wydarzeń zewnętrznych] (http://davispj.com/2010/09/26/new-couchdb-externals-api.html). –