Detta dokument har översatts av AI. För eventuella felaktigheter, se den engelska versionen
NocoBase stöder utökning av användarautentiseringstyper efter behov. Användarautentisering delas generellt in i två typer: den ena är att fastställa användaridentiteten direkt i NocoBase-applikationen, till exempel via lösenordsinloggning eller SMS-inloggning; den andra är att låta tredjepartstjänster fastställa användaridentiteten och sedan meddela NocoBase-applikationen resultatet via återanrop (callbacks), som till exempel med OIDC- och SAML-autentisering. Autentiseringsprocessen för dessa två typer i NocoBase ser i princip ut så här:
api.auth.signIn(), som i sin tur begär inloggningsgränssnittet auth:signIn. Samtidigt skickas den aktuella autentiseringsidentifieraren till backend via HTTP-huvudet X-Authenticator.auth:signIn vidarebefordrar begäran till den autentiseringstyp som motsvarar autentiseringsidentifieraren i HTTP-huvudet. Metoden validate i den registrerade autentiseringsklassen för den typen hanterar sedan den relevanta logiken.auth:signIn-gränssnittet, sparar token i Local Storage och slutför inloggningen. Detta steg hanteras automatiskt internt av SDK:n.
auth:getAuthUrl) och skickar med information som applikationsnamn och autentiseringsidentifierare enligt protokollet.auth:redirect). Tjänsten returnerar autentiseringsresultatet tillsammans med information som applikationsnamn och autentiseringsidentifierare.AuthManager hämtas den motsvarande autentiseringsklassen, och metoden auth.signIn() anropas aktivt. Metoden auth.signIn() kommer i sin tur att anropa validate() för att hantera autentiseringslogiken.token och autentiseringsidentifieraren som URL-parametrar, till exempel ?authenticator=xxx&token=yyy.
Nedan beskriver vi hur ni registrerar gränssnitt på serversidan och användargränssnitt på klientsidan.
NocoBase-kärnan tillhandahåller registrering och hantering för att utöka autentiseringstyper. Kärnlogiken för att utöka ett inloggnings-plugin kräver att ni ärver från kärnans abstrakta klass Auth och implementerar de motsvarande standardgränssnitten.
För fullständig API-referens, se Auth.
Kärnan registrerar även grundläggande resursoperationer relaterade till användarautentisering.
| API | Beskrivning |
|---|---|
auth:check | Kontrollerar om användaren är inloggad |
auth:signIn | Logga in |
auth:signUp | Registrera dig |
auth:signOut | Logga ut |
I de flesta fall kan den utökade användarautentiseringstypen även använda den befintliga JWT-autentiseringslogiken för att generera behörigheter för användare att komma åt API:et. Kärnans BaseAuth-klass har en grundläggande implementering av den abstrakta klassen Auth, se BaseAuth. Plugin kan direkt ärva från BaseAuth-klassen för att återanvända delar av logikkoden och därmed minska utvecklingskostnaderna.
Vid implementering av användarautentiseringslogik involveras vanligtvis hantering av användardata. I en NocoBase-applikation definieras de relaterade samlingarna som standard enligt följande:
| Samling | Syfte | Plugin |
|---|---|---|
users | Lagrar användarinformation, såsom e-post, smeknamn och lösenord | Användar-plugin (@nocobase/plugin-users) |
authenticators | Lagrar information om autentiserare (autentiseringstypens entitet), motsvarande autentiseringstyp och konfiguration | Användarautentiserings-plugin (@nocobase/plugin-auth) |
usersAuthenticators | Kopplar samman användare och autentiserare, sparar användarinformation under den motsvarande autentiseraren | Användarautentiserings-plugin (@nocobase/plugin-auth) |
Normalt sett räcker det att använda users och usersAuthenticators för att lagra relevant användardata för utökade inloggningsmetoder. Endast i speciella fall behöver ni lägga till en ny samling.
Huvudfälten för usersAuthenticators är:
| Fält | Beskrivning |
|---|---|
uuid | Unik identifierare för användaren med denna autentiseringsmetod, till exempel telefonnummer eller WeChat openid |
meta | JSON-fält, annan information som behöver sparas |
userId | Användar-ID |
authenticator | Autentiserarens namn (unik identifierare) |
För användarfrågor och skapandeoperationer har datamodellen AuthModel för authenticators även inkapslat flera metoder som kan användas i CustomAuth-klassen via this.authenticator[metodnamn]. För fullständig API-referens, se AuthModel.
Den utökade autentiseringsmetoden behöver registreras hos autentiseringshanteringsmodulen.
Klientens användargränssnitt registreras via gränssnittet registerType som tillhandahålls av användarautentiserings-pluginets klient:

Om flera autentiserare som motsvarar autentiseringstypen har registrerat inloggningsformulär, kommer dessa att visas som flikar. Flikens titel är autentiserarens titel som konfigurerats i backend.


Vanligtvis är detta en tredjeparts-inloggningsknapp, men det kan i praktiken vara vilken komponent som helst.

Om ni behöver hoppa från inloggningssidan till registreringssidan, måste ni hantera detta själva i inloggningskomponenten.

Överst finns den generella autentiseringskonfigurationen, och nedanför finns den del av det anpassade konfigurationsformuläret som kan registreras.
För att initiera API-anrop relaterade till användarautentisering på klientsidan kan ni använda NocoBase SDK.
För detaljerade API-referenser, se @nocobase/sdk - Auth.