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ć!

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.


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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.