MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Architektura systemu logowania na stosie MEAN?

Skończyło się na połączeniu mojego oryginalnego przepływu pracy z przykładem uwierzytelniania Express, widzianym tutaj . Wygląda to następująco:

  • Gdy użytkownik początkowo ładuje aplikację, wykonywane jest wywołanie http do punktu końcowego Express, które sprawdza, czy sesja już istnieje dla użytkownika. Jeśli tak, użytkownik jest przechowywany w $rootScope i uważane za zalogowane.
  • Za każdym razem, gdy zmienia się trasa AngularJS, uzyskuje się dostęp do tego samego punktu końcowego. Ochrona trasy została określona w sposób podobny do opisanego tu . Jeśli punkt końcowy kiedykolwiek zwróci, że żadna sesja nie istnieje, $rootScope.user nie jest ustawiona (jeśli trzeba), a użytkownik zostaje przekierowany na stronę logowania.
  • Gdy formularz logowania jest przetwarzany, jest wysyłany do punktu końcowego Express. Punkt końcowy pobiera użytkownika z bazy danych mongoDB (jeśli istnieje) i próbuje zaszyfrować hasło. Jeśli to pasuje, sesja użytkownika jest ustawiana, przechowywana w mongo DB, a punkt końcowy zwraca user obiekt (używany do przechowywania w $rootScope, jak wspomniano wcześniej).
  • Za każdym razem, gdy uzyskiwany jest dostęp do dalszych punktów końcowych, funkcje są najpierw przekazywane przez restrict funkcja zapewniająca istnienie sesji przed wysłaniem jakichkolwiek danych do klienta. Zwraca 401 jeśli nie istnieje żadna sesja, która jest następnie obsługiwana po stronie Angulara przy użyciu tego przechwytywacza HTTP aby wyłączyć $rootScope.user i przekieruj do ekranu logowania.
  • Kiedy użytkownik kliknie „wyloguj się” po stronie Angulara, sesja zostanie anulowana i usunięta z bazy danych mongo, $rootScope.user jest ustawiona na null, a użytkownik jest przekierowywany z powrotem na stronę główną.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Elastyczne wyszukiwanie z MongoDB:Wyszukiwanie plików PDF

  2. Mongoid 3 + Heroku (MongoHQ) powodują Moped::Errors::OperationFailure

  3. Używanie identyfikatorów UUID w manguście dla odniesień do ObjectID

  4. MongoDB/Mongoose ograniczenie unikatowości w polu Data

  5. Skopiuj pierwszą wartość tablicy do innego pola w MongoDB