Questa documentazione è stata tradotta automaticamente dall'IA.
NocoBase supporta l'estensione dei tipi di autenticazione utente in base alle proprie esigenze. L'autenticazione utente si divide generalmente in due tipi: il primo prevede la verifica dell'identità dell'utente all'interno dell'applicazione NocoBase stessa, come l'accesso tramite password o SMS; il secondo si basa su servizi di terze parti che verificano l'identità dell'utente e notificano il risultato all'applicazione NocoBase tramite callback, come i metodi di autenticazione OIDC o SAML. Il processo di autenticazione per questi due diversi tipi di metodi in NocoBase è fondamentalmente il seguente:
api.auth.signIn(), richiedendo l'interfaccia auth:signIn e inviando l'identificatore dell'autenticatore attualmente in uso al backend tramite l'header della richiesta X-Authenticator.auth:signIn, basandosi sull'identificatore dell'autenticatore presente nell'header della richiesta, inoltra la richiesta al tipo di autenticazione corrispondente. Il metodo validate della classe di autenticazione registrata per quel tipo gestisce quindi la logica appropriata.token di autenticazione dalla risposta dell'interfaccia auth:signIn, salva il token nel Local Storage e completa l'accesso. Questo passaggio viene gestito automaticamente dall'SDK.
auth:getAuthUrl), e trasmette informazioni come il nome dell'applicazione e l'identificatore dell'autenticatore secondo il protocollo.auth:redirect), restituendo il risultato dell'autenticazione e informazioni come il nome dell'applicazione e l'identificatore dell'autenticatore.AuthManager e richiama attivamente il metodo auth.signIn(). Il metodo auth.signIn() a sua volta richiama il metodo validate() per gestire la logica di autorizzazione.token di autenticazione, quindi effettua un reindirizzamento 302 alla pagina frontend, includendo il token e l'identificatore dell'autenticatore nei parametri dell'URL, ad esempio ?authenticator=xxx&token=yyy.
Di seguito, illustreremo come registrare le interfacce lato server e le interfacce utente lato client.
Il kernel di NocoBase offre la registrazione e la gestione per l'estensione dei tipi di autenticazione. La gestione della logica centrale per l'estensione dei plugin di accesso richiede l'ereditarietà dalla classe astratta Auth del kernel e l'implementazione delle interfacce standard corrispondenti.
Per la documentazione API completa, consulti Auth.
Il kernel registra anche le operazioni sulle risorse di base relative all'autenticazione utente.
| API | Descrizione |
|---|---|
auth:check | Verifica se l'utente è autenticato |
auth:signIn | Accedi |
auth:signUp | Registrati |
auth:signOut | Disconnetti |
Nella maggior parte dei casi, il tipo di autenticazione utente esteso può anche riutilizzare la logica di autenticazione JWT esistente per generare le credenziali di accesso API per l'utente. La classe BaseAuth del kernel fornisce un'implementazione di base della classe astratta Auth; consulti BaseAuth. I plugin possono ereditare direttamente dalla classe BaseAuth per riutilizzare parte del codice logico e ridurre i costi di sviluppo.
Nell'implementazione della logica di autenticazione utente, è solitamente coinvolta la gestione dei dati utente. In un'applicazione NocoBase, le collezioni correlate sono definite di default come segue:
| Collezioni | Descrizione | Plugin |
|---|---|---|
users | Memorizza le informazioni utente, come email, nickname e password | Plugin Utente (@nocobase/plugin-users) |
authenticators | Memorizza le informazioni dell'autenticatore (entità del tipo di autenticazione), corrispondenti al tipo e alla configurazione | Plugin di autenticazione utente (@nocobase/plugin-auth) |
usersAuthenticators | Associa utenti e autenticatori, salva le informazioni utente sotto l'autenticatore corrispondente | Plugin di autenticazione utente (@nocobase/plugin-auth) |
Generalmente, i metodi di accesso estesi utilizzano users e usersAuthenticators per memorizzare i dati utente corrispondenti. Solo in casi speciali è necessario aggiungere una nuova collezione autonomamente.
I campi principali di usersAuthenticators sono:
| Campo | Descrizione |
|---|---|
uuid | Identificatore univoco per questo tipo di autenticazione, come un numero di telefono o un ID utente di un servizio di terze parti |
meta | Campo JSON, altre informazioni da salvare |
userId | ID Utente |
authenticator | Nome dell'autenticatore (identificatore univoco) |
Per le operazioni di query e creazione utente, il modello di dati AuthModel di authenticators incapsula anche diversi metodi che possono essere utilizzati nella classe CustomAuth tramite this.authenticator[nomeMetodo]. Per la documentazione API completa, consulti AuthModel.
Il metodo di autenticazione esteso deve essere registrato nel modulo di gestione dell'autenticazione.
L'interfaccia utente lato client viene registrata tramite l'interfaccia registerType fornita dal client del plugin di autenticazione utente:

Se più autenticatori corrispondenti a tipi di autenticazione hanno registrato moduli di accesso, questi verranno visualizzati sotto forma di schede (Tab). Il titolo della scheda sarà il titolo dell'autenticatore configurato nel backend.


Solitamente si tratta di un pulsante di accesso di terze parti, ma può essere qualsiasi componente.

Se è necessario passare dalla pagina di accesso a quella di registrazione, dovrà gestire questo passaggio autonomamente nel componente di accesso.

La parte superiore mostra la configurazione generica dell'autenticatore, mentre la parte inferiore è dedicata alla sezione del modulo di configurazione personalizzata registrabile.
Per avviare richieste di interfacce relative all'autenticazione utente lato client, può utilizzare l'SDK fornito da NocoBase.
Per riferimenti API dettagliati, consulti @nocobase/sdk - Auth.