Podejścia dotyczące autoryzacji i wzorce projektowe dla aplikacji Node.js [zamknięte]

80

Tworzę wielostronicowy interfejs administratora dla wewnętrznej platformy oprogramowania dla przedsiębiorstw. Pomyśl o logice klejenia łączącej różne interfejsy API, zapytania bazy danych i skrypty powłoki.

Będziemy używać node.js, frameworka ekspresowego (w tym szablonów jade) i LDAP do uwierzytelniania.

Staram się znaleźć informacje dotyczące wzorców projektowych i najlepszych praktyk dotyczących autoryzacji w aplikacjach węzłowych. Najchętniej chciałbym skorzystać z modelu opartego na rolach, ponieważ moi użytkownicy są zaznajomieni z tym podejściem oraz jego pielęgnacją i karmieniem.

Jestem nowym użytkownikiem node.js, więc nie zakładaj, że widziałem już moduł lub popularny post na blogu. Prawdopodobnie jest mnóstwo informacji i po prostu nie wiem, gdzie szukać.

Z góry dziękuję za wszelkie informacje, które możesz udzielić!

Dave Snigier
źródło

Odpowiedzi:

63

Zgodnie z pierwszym pytaniem, potrzebujesz implementacji procesu autoryzacji w NodeJs. Odkryłem i wykorzystałem wiele interfejsów API NodeJ. Wolałbym następujące interfejsy API dla aplikacji korporacyjnych.

  • Do uwierzytelnienia: paszport lub satelita w przypadku opracowywania SPA (front-end) w AngularJS.

  • Do autoryzacji: ACL . Bezpieczeństwo oparte na rolach za pomocą metod i interfejsów API REST. Chciałbym wspomnieć o casbinie, jeśli chcesz używać również RABC, ABAC.

Po drugie, potrzebujesz podejścia do implementacji i programowania w NodeJs.

  • Łatwy i mój ulubiony wzorzec projektowy i Framework dla NodeJs: framework MVC, SailsJs . Za gotowość do uruchomienia i architekturę modułową. Zarządzanie kodem jest łatwe na dłuższą metę (najbardziej praktyczne wymaganie dla aplikacji korporacyjnej). Łatwa konserwacja. SailsJs jest również wstępnie skonfigurowany z Socket.io , za pomocą którego możesz tworzyć moduły czasu rzeczywistego, widżety, widżety czatu w swoim projekcie.

  • Express Możesz użyć Express i zaprojektować własną niestandardową strukturę projektu MVC. Jest to również popularne i solidne. Możesz znaleźć popularne projekty nasion tego samego na Yeoman

  • Redis Jako warstwa pamięci podręcznej lub warstwa sesji. Zawsze dobrze jest użyć oddzielnego buforowania lub warstwy sesji, ponieważ nie blokuje to skalowania aplikacji w chmurze do n-tych wystąpień.

  • Możesz użyć Redis i Socket.io do tworzenia funkcji w czasie rzeczywistym, takich jak lokalizacja geograficzna , obecność użytkowników (online / offline), czat, powiadomienia push i wiele innych.

  • ORM: Waterline . Ze względu na łatwe podejście do zapytań. Jest to również wbudowany i domyślny ORM SailsJs. Możesz także użyć Sequelizejs , jeśli nie używasz SailsJs. Zalecałbym użycie natywnych konektorów dostarczonych przez dostawców DB.

  • Baza danych: zgodnie z wymaganiami. Waterline ORM obsługuje PostgreSQL, MySQL, MongoDB i nie tylko.

  • Mój ulubiony silnik widoku: EJS . Nie musisz uczyć się nowych rzeczy, aby rozwijać warstwę prezentacji. Jest to również wbudowany i domyślny silnik widoku SailsJs, dlatego jestem fanem SailsJs.

Myślę, że omówiłem wszystkie ważne informacje dotyczące tworzenia aplikacji Enterprise w NodeJs. Nie mówię, że powyższe pakiety są najlepsze, ale wspólnie można je najlepiej dopasować do każdego scenariusza przedsiębiorstwa. Istnieją inne znane pakiety, z których możesz korzystać zgodnie z własnymi wymaganiami.

Amreesh Tyagi
źródło
2
waterline and sails.js +1
Travis Webb
@kosnkov Większość z nich jest w porządku. Sprawdź HapiJS, aby uzyskać mocniejszą alternatywę dla Express, i Sequelize, aby uzyskać alternatywę dla Waterline. Moim zdaniem uważam, że SailsJS to przesada. Jeśli pochodzisz z RAILS lub Django, powinieneś rozumieć wystarczająco dużo koncepcji, aby poradzić sobie tylko z Express / Hapi i Waterline / Sequelize; jest znacznie lżejszy niż żagle. Wybieram Hapi / Sequelize.
damusix
Niezła lista. Dobrze byłoby również dodać małą notatkę o ochronie przed brutalną siłą. Pakiet jak szybkość limiter elastyczne powinny być dobrze dopasowane.
Animir
15

Oto kilka informacji, aby rozpocząć:

Mam nadzieję, że to ułatwi rozpoczęcie.

zemirco
źródło
Dziękuję Ci! Sprawdzę te linki. Przykład oprogramowania pośredniego dla tras ekspresowych wydaje się być bardzo zbliżony do przypadku użycia, który mam
Dave Snigier
53
Dziwne, że Twoja odpowiedź nie zawiera słowa Autoryzacja :)
redben
1
Doskonała odpowiedź, bardzo mi pomogła. Nawet bez autoryzacji słownej :)
Mr. Baudin
0

Powinienem powiedzieć, że autoryzacja węzła jest również dobrym kandydatem. Pomysł jest zapożyczony z SAP (dostawca ERP), jest to autoryzacja obiektowa. Może być również używany jako dodatek do innych frameworków, takich jak: Passport i Express.

Kai Zhang
źródło