Esta documentación ha sido traducida automáticamente por IA.
NocoBase le permite extender los tipos de autenticación de usuario según sus necesidades. Generalmente, la autenticación de usuario se divide en dos categorías: una donde la identidad del usuario se verifica dentro de la propia aplicación NocoBase (por ejemplo, inicio de sesión con contraseña o SMS); y otra donde un servicio de terceros verifica la identidad y notifica el resultado a la aplicación NocoBase a través de una devolución de llamada (como OIDC, SAML, entre otros). A continuación, se describe el proceso de autenticación para estos dos tipos en NocoBase:
api.auth.signIn(), solicitando la interfaz auth:signIn. Al mismo tiempo, el identificador del autenticador actual se envía al backend a través del encabezado de la solicitud X-Authenticator.auth:signIn reenvía la solicitud al tipo de autenticación correspondiente, basándose en el identificador del autenticador en el encabezado. El método validate de la clase de autenticación registrada para ese tipo se encarga de procesar la lógica.token de autenticación de la respuesta de la interfaz auth:signIn, guarda el token en el almacenamiento local (Local Storage) y completa el inicio de sesión. Este paso es gestionado automáticamente por el SDK.
auth:getAuthUrl), y envía información como el nombre de la aplicación y el identificador del autenticador según el protocolo.auth:redirect), devuelve el resultado de la autenticación y, al mismo tiempo, el nombre de la aplicación y el identificador del autenticador.AuthManager y llama activamente al método auth.signIn(). El método auth.signIn() a su vez invocará el método validate() para gestionar la lógica de autenticación.token de autenticación, redirige (con un código 302) a la página de frontend, incluyendo el token y el identificador del autenticador en los parámetros de la URL, por ejemplo, ?authenticator=xxx&token=yyy.
A continuación, le mostraremos cómo registrar interfaces del lado del servidor y de la interfaz de usuario del cliente.
El núcleo de NocoBase ofrece la capacidad de registrar y gestionar tipos de autenticación extendidos. Para implementar la lógica central de un plugin de inicio de sesión extendido, es necesario heredar de la clase abstracta Auth del núcleo e implementar sus interfaces estándar.
Para una referencia completa de la API, consulte Auth.
El núcleo también registra operaciones básicas de recursos relacionadas con la autenticación de usuarios.
| API | Descripción |
|---|---|
auth:check | Verifica si el usuario ha iniciado sesión |
auth:signIn | Iniciar sesión |
auth:signUp | Registrarse |
auth:signOut | Cerrar sesión |
En la mayoría de los casos, los tipos de autenticación de usuario extendidos pueden aprovechar la lógica de autenticación JWT existente para generar credenciales de acceso a la API. La clase BaseAuth del núcleo proporciona una implementación básica de la clase abstracta Auth. Consulte BaseAuth. Los plugins pueden heredar directamente de la clase BaseAuth para reutilizar parte del código lógico y reducir los costos de desarrollo.
Al implementar la lógica de autenticación de usuario, generalmente se requiere el manejo de datos de usuario. En una aplicación NocoBase, las colecciones relacionadas se definen por defecto de la siguiente manera:
| Colección | Descripción | Plugin |
|---|---|---|
users | Almacena información del usuario, como correo electrónico, nombre de usuario y contraseña | Plugin de usuario (@nocobase/plugin-users) |
authenticators | Almacena información del autenticador (entidad de tipo de autenticación), correspondiente al tipo de autenticación y su configuración | Plugin de autenticación de usuario (@nocobase/plugin-auth) |
usersAuthenticators | Asocia usuarios y autenticadores, guarda la información del usuario bajo el autenticador correspondiente | Plugin de autenticación de usuario (@nocobase/plugin-auth) |
En general, los métodos de inicio de sesión extendidos pueden utilizar las colecciones users y usersAuthenticators para almacenar los datos de usuario correspondientes. Solo en casos especiales necesitará añadir una nueva colección.
Los campos principales de usersAuthenticators son:
| Campo | Descripción |
|---|---|
uuid | Identificador único del usuario para este tipo de autenticación, como un número de teléfono o un ID de usuario de un servicio de terceros (por ejemplo, WeChat openid) |
meta | Campo JSON, otra información a guardar |
userId | ID de usuario |
authenticator | Nombre del autenticador (identificador único) |
Para las operaciones de consulta y creación de usuarios, el modelo de datos AuthModel de authenticators también encapsula varios métodos que pueden utilizarse en la clase CustomAuth a través de this.authenticator[nombreDelMetodo]. Para la API completa, consulte AuthModel.
El método de autenticación extendido debe registrarse en el módulo de gestión de autenticación.
La interfaz de usuario del cliente se registra a través de la interfaz registerType proporcionada por el cliente del plugin de autenticación de usuario:

Si varios autenticadores correspondientes a diferentes tipos de autenticación han registrado formularios de inicio de sesión, estos se mostrarán en forma de pestañas (Tabs). El título de cada pestaña será el título del autenticador configurado en el backend.


Generalmente se utiliza para botones de inicio de sesión de terceros, pero en realidad puede ser cualquier componente.

Si necesita saltar de la página de inicio de sesión a la página de registro, deberá gestionarlo usted mismo dentro del componente de inicio de sesión.

La parte superior muestra la configuración genérica del autenticador, y la inferior es la sección del formulario donde puede registrar configuraciones personalizadas.
Para iniciar solicitudes relacionadas con la autenticación de usuarios desde el lado del cliente, puede utilizar el SDK proporcionado por NocoBase.
Para referencias detalladas de la API, consulte @nocobase/sdk - Auth.