Dit document is vertaald door AI. Voor onnauwkeurigheden, raadpleeg de Engelse versie
NocoBase ondersteunt het uitbreiden van gebruikersauthenticatietypen naar behoefte. Gebruikersauthenticatie kent over het algemeen twee typen: het ene type bepaalt de gebruikersidentiteit binnen de NocoBase-applicatie zelf (bijv. wachtwoordlogin, sms-login), terwijl het andere type de gebruikersidentiteit laat bepalen door externe services, die vervolgens het resultaat via callbacks aan de NocoBase-applicatie melden (bijv. OIDC, SAML en andere authenticatiemethoden). Het authenticatieproces voor deze twee verschillende typen authenticatiemethoden in NocoBase is in principe als volgt:
api.auth.signIn() aan te roepen, waarbij de login-interface auth:signIn wordt aangevraagd. Tegelijkertijd wordt de identificatie van de huidige authenticator via de request header X-Authenticator naar de backend gestuurd.auth:signIn interface stuurt de aanvraag door naar het corresponderende authenticatietype op basis van de authenticator-identificatie in de request header. De validate-methode in de geregistreerde authenticatieklasse van dat type voert vervolgens de bijbehorende logische verwerking uit.auth:signIn interface-respons, slaat het token op in Local Storage en voltooit de login. Deze stap wordt automatisch intern door de SDK afgehandeld.
auth:getAuthUrl) en stuurt, conform het protocol, informatie mee zoals de applicatienaam en de authenticator-identificatie.auth:redirect), retourneert het authenticatieresultaat en stuurt tevens informatie mee zoals de applicatienaam en de authenticator-identificatie.AuthManager en roept actief de auth.signIn()-methode aan. De auth.signIn()-methode roept vervolgens de validate()-methode aan om de authenticatielogica af te handelen.token en de authenticator-identificatie als URL-parameters worden meegestuurd, bijvoorbeeld ?authenticator=xxx&token=yyy.
Hieronder beschrijven we hoe u server-side interfaces en client-side gebruikersinterfaces registreert.
De NocoBase-kernel biedt registratie en beheer voor het uitbreiden van authenticatietypen. De kernlogica voor het uitbreiden van een login-plugin vereist het overerven van de abstracte klasse Auth van de kernel en het implementeren van de corresponderende standaardinterfaces.
Voor de volledige API, zie Auth.
De kernel registreert ook basis resource-operaties met betrekking tot gebruikersauthenticatie.
| API | Beschrijving |
|---|---|
auth:check | Controleren of gebruiker is ingelogd |
auth:signIn | Inloggen |
auth:signUp | Registreren |
auth:signOut | Uitloggen |
In de meeste gevallen kan het uitgebreide gebruikersauthenticatietype ook de bestaande JWT-authenticologoca gebruiken om de referenties te genereren voor gebruikerstoegang tot de API. De BaseAuth-klasse in de kernel heeft een basisimplementatie van de abstracte klasse Auth uitgevoerd; zie BaseAuth. Plugins kunnen direct de BaseAuth-klasse overerven om een deel van de logische code te hergebruiken en zo de ontwikkelkosten te verlagen.
Bij het implementeren van gebruikersauthenticologoca is meestal de verwerking van gebruikersgegevens betrokken. In een NocoBase-applicatie zijn de gerelateerde collecties standaard gedefinieerd als:
| Collectie | Beschrijving | Plugin |
|---|---|---|
users | Slaat gebruikersinformatie op, zoals e-mail, bijnaam en wachtwoord | Gebruikers-plugin (@nocobase/plugin-users) |
authenticators | Slaat authenticator (authenticatietype-entiteit) informatie op, corresponderend met authenticatietype en configuratie | Gebruikersauthenticatie-plugin (@nocobase/plugin-auth) |
usersAuthenticators | Koppelt gebruikers en authenticators, slaat gebruikersinformatie op onder de corresponderende authenticator | Gebruikersauthenticatie-plugin (@nocobase/plugin-auth) |
Gewoonlijk volstaat het om voor uitgebreide loginmethoden de users en usersAuthenticators te gebruiken om de bijbehorende gebruikersgegevens op te slaan. Alleen in speciale gevallen hoeft u zelf een nieuwe collectie toe te voegen.
De belangrijkste velden van usersAuthenticators zijn:
| Veld | Beschrijving |
|---|---|
uuid | Unieke identificatie voor dit authenticatietype, zoals een telefoonnummer of een externe service gebruikers-ID |
meta | JSON-veld, andere op te slaan informatie |
userId | Gebruikers-ID |
authenticator | Authenticatornaam (unieke identificatie) |
Voor gebruikersquery- en aanmaakoperaties heeft het gegevensmodel AuthModel van authenticators ook verschillende methoden ingekapseld, die in de CustomAuth-klasse kunnen worden gebruikt via this.authenticator[methodName]. Voor de volledige API, zie AuthModel.
De uitgebreide authenticatiemethode moet worden geregistreerd bij de authenticatiebeheermodule.
De client-gebruikersinterface wordt geregistreerd via de registerType-interface die wordt aangeboden door de client van de gebruikersauthenticatie-plugin:

Als meerdere authenticators die corresponderen met het authenticatietype een inlogformulier hebben geregistreerd, worden deze als tabs weergegeven. De tabtitel is de titel van de authenticator zoals geconfigureerd in de backend.


Meestal zijn dit inlogknoppen van externe partijen, maar het kan in feite elk component zijn.

Als u van de inlogpagina naar de registratiepagina moet navigeren, moet u dit zelf afhandelen in het inlogcomponent.

Bovenaan vindt u de algemene authenticatorconfiguratie, en onderaan het deel van het aangepaste configuratieformulier dat kan worden geregistreerd.
Om client-side verzoeken voor gebruikersauthenticatie-gerelateerde interfaces te initiëren, kunt u de door NocoBase geleverde SDK gebruiken.
Voor gedetailleerde API-referenties, zie @nocobase/sdk - Auth.