Ten dokument został przetłumaczony przez AI. W przypadku niedokładności, proszę odnieść się do wersji angielskiej
NocoBase umożliwia rozszerzanie typów uwierzytelniania użytkowników zgodnie z Państwa potrzebami. Uwierzytelnianie użytkowników zazwyczaj dzieli się na dwa główne typy:
api.auth.signIn(), żądając interfejsu auth:signIn. Jednocześnie identyfikator aktualnie używanego uwierzytelniacza jest przekazywany do backendu poprzez nagłówek żądania X-Authenticator.auth:signIn, na podstawie identyfikatora uwierzytelniacza z nagłówka żądania, przekazuje żądanie do odpowiedniego typu uwierzytelniania. Metoda validate w klasie uwierzytelniającej zarejestrowanej dla tego typu wykonuje odpowiednie przetwarzanie logiczne.auth:signIn, zapisuje token w Local Storage i kończy proces logowania. Ten krok jest automatycznie obsługiwany wewnętrznie przez SDK.
auth:getAuthUrl), przekazując zgodnie z protokołem informacje takie jak nazwa aplikacji i identyfikator uwierzytelniacza.auth:redirect), zwracając wynik uwierzytelniania oraz informacje takie jak nazwa aplikacji i identyfikator uwierzytelniacza.AuthManager i aktywnie wywołuje metodę auth.signIn(). Metoda auth.signIn() z kolei wywołuje metodę validate() do obsługi logiki autoryzacji.token i identyfikator uwierzytelniacza do parametrów URL, np. ?authenticator=xxx&token=yyy.
Poniżej przedstawiamy, jak zarejestrować interfejsy po stronie serwera oraz interfejsy użytkownika po stronie klienta.
Jądro NocoBase zapewnia rejestrację i zarządzanie rozszerzalnymi typami uwierzytelniania. Aby rozszerzyć wtyczkę logowania o niestandardową logikę, należy dziedziczyć po abstrakcyjnej klasie Auth jądra i zaimplementować odpowiednie standardowe interfejsy.
Pełne odniesienie do API znajdą Państwo w Auth.
Jądro rejestruje również podstawowe operacje na zasobach związane z uwierzytelnianiem użytkowników.
| API | Opis |
|---|---|
auth:check | Sprawdza, czy użytkownik jest zalogowany |
auth:signIn | Logowanie |
auth:signUp | Rejestracja |
auth:signOut | Wylogowanie |
W większości przypadków rozszerzone typy uwierzytelniania użytkowników mogą również wykorzystywać istniejącą logikę autoryzacji JWT do generowania poświadczeń dostępu użytkownika do API. Klasa BaseAuth w jądrze stanowi podstawową implementację abstrakcyjnej klasy Auth. Proszę zapoznać się z BaseAuth. Wtyczki mogą bezpośrednio dziedziczyć po klasie BaseAuth, aby ponownie wykorzystać część kodu logicznego i zmniejszyć koszty rozwoju.
Podczas implementacji logiki uwierzytelniania użytkownika zazwyczaj konieczne jest przetwarzanie danych użytkownika. W aplikacji NocoBase, domyślnie powiązane kolekcje są zdefiniowane następująco:
| Kolekcja | Opis | Wtyczka |
|---|---|---|
users | Przechowuje informacje o użytkownikach, takie jak adres e-mail, nazwa użytkownika i hasło | Wtyczka użytkowników (@nocobase/plugin-users) |
authenticators | Przechowuje informacje o uwierzytelniaczach (encji typu uwierzytelniania), odpowiadające typowi i konfiguracji uwierzytelniania | Wtyczka uwierzytelniania użytkowników (@nocobase/plugin-auth) |
usersAuthenticators | Łączy użytkowników z uwierzytelniaczami, przechowuje informacje o użytkownikach w ramach danego uwierzytelniacza | Wtyczka uwierzytelniania użytkowników (@nocobase/plugin-auth) |
Zazwyczaj, rozszerzone metody logowania mogą wykorzystywać kolekcje users i usersAuthenticators do przechowywania odpowiednich danych użytkownika. Tylko w szczególnych przypadkach konieczne jest samodzielne dodanie nowej kolekcji.
Główne pola kolekcji usersAuthenticators to:
| Pole | Opis |
|---|---|
uuid | Unikalny identyfikator użytkownika dla tego typu uwierzytelniania, np. numer telefonu, WeChat openid itp. |
meta | Pole JSON, inne informacje do zapisania |
userId | ID użytkownika |
authenticator | Nazwa uwierzytelniacza (unikalny identyfikator) |
Dla operacji wyszukiwania i tworzenia użytkowników, model danych AuthModel kolekcji authenticators również hermetyzuje kilka metod, które mogą być używane w klasie CustomAuth poprzez this.authenticator[nazwaMetody]. Pełne odniesienie do API znajdą Państwo w AuthModel.
Rozszerzona metoda uwierzytelniania musi zostać zarejestrowana w module zarządzania uwierzytelnianiem.
Interfejs użytkownika po stronie klienta jest rejestrowany za pośrednictwem interfejsu registerType dostarczanego przez klienta wtyczki uwierzytelniania użytkowników:

Jeśli wiele uwierzytelniaczy odpowiadających typom uwierzytelniania zarejestrowało formularze logowania, zostaną one wyświetlone w formie zakładek (Tabów). Tytuł zakładki będzie odpowiadał tytułowi uwierzytelniacza skonfigurowanemu w panelu administracyjnym.


Zazwyczaj jest to przycisk logowania strony trzeciej, ale w rzeczywistości może to być dowolny komponent.

Jeśli konieczne jest przejście ze strony logowania do strony rejestracji, należy to obsłużyć samodzielnie w komponencie logowania.

Górna część przedstawia ogólną konfigurację uwierzytelniacza, natomiast dolna to sekcja formularza konfiguracji niestandardowej, którą można zarejestrować.
Aby zainicjować żądania do interfejsów API związanych z uwierzytelnianiem użytkowników po stronie klienta, mogą Państwo użyć SDK dostarczonego przez NocoBase.
Szczegółowe odniesienie do API znajdą Państwo w @nocobase/sdk - Auth.