logologo
Empezar
Manual
Desarrollo
Plugins
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Empezar
Manual
Desarrollo
Plugins
API
logologo

Autenticación de usuario

Visión general
Gestión de autenticadores

Tipos de autenticación

Contraseña
SMS

OIDC

Configuración

Ejemplos

Inicio de sesión con Google
Inicio de sesión con Microsoft

SAML

Configuración

Ejemplos

Inicio de sesión con Google
LDAP
CAS
WeCom
DingTalk
Clave de API

Guía de desarrollo

Extender tipos de autenticación
Referencia de API

Verificación

Visión general

Tipos de verificación

SMS
Autenticador TOTP

Guía de desarrollo

Extender tipos de verificación
Extender escenarios de verificación
Extender proveedores de SMS
Referencia de API
Autenticación de dos factores (2FA)
Previous PageExtender escenarios de verificación
Next PageReferencia de API
Aviso de traducción por IA

Esta documentación ha sido traducida automáticamente por IA.

#Extender un proveedor de servicios SMS

Este artículo explica cómo puede extender la funcionalidad de los proveedores de servicios SMS en la característica de Verificación: SMS a través de un plugin.

#Cliente

#Registrar el formulario de configuración

Cuando configure el verificador de SMS, después de seleccionar un tipo de proveedor de servicios SMS, aparecerá un formulario de configuración asociado a ese tipo de proveedor. Este formulario de configuración debe ser registrado por el desarrollador en el lado del cliente.

import { Plugin, SchemaComponent } from '@nocobase/client';
import PluginVerificationClient from '@nocobase/plugin-verification/client';
import React from 'react';

const CustomSMSProviderSettingsForm: React.FC = () => {
  return <SchemaComponent schema={{
    type: 'void',
    properties: {
      accessKeyId: {
        title: `{{t("Access Key ID", { ns: "${NAMESPACE}" })}}`,
        type: 'string',
        'x-decorator': 'FormItem',
        'x-component': 'TextAreaWithGlobalScope',
        required: true,
      },
      accessKeySecret: {
        title: `{{t("Access Key Secret", { ns: "${NAMESPACE}" })}}`,
        type: 'string',
        'x-decorator': 'FormItem',
        'x-component': 'TextAreaWithGlobalScope',
        'x-component-props': { password: true },
        required: true,
      },
    }
  }} />
}

class PluginCustomSMSProviderClient extends Plugin {
  async load() {
    const plugin = this.app.pm.get('verification') as PluginVerificationClient;
    plugin.smsOTPProviderManager.registerProvider('custom-sms-provider-name', {
      components: {
        AdminSettingsForm: CustomSMSProviderSettingsForm,
      },
    });
  }
}

#Servidor

#Implementar la interfaz de envío

El plugin de verificación ya ha encapsulado el proceso de creación de contraseñas dinámicas de un solo uso (OTP). Por lo tanto, los desarrolladores solo necesitan implementar la lógica de envío para interactuar con el proveedor de servicios SMS.

class CustomSMSProvider extends SMSProvider {
  constructor(options) {
    super(options);
    // options es el objeto de configuración del cliente
    const options = this.options;
    // ...
  }

  async send(phoneNumber: string, data: { code: string }) {
    // ...
  }
}

#Registrar el tipo de verificación

Una vez que la interfaz de envío esté implementada, deberá registrarla.

import { Plugin } from '@nocobase/server';
import PluginVerificationServer from '@nocobase/plugin-verification';
import { tval } from '@nocobase/utils';

class PluginCustomSMSProviderServer extends Plugin {
  async load() {
    const plugin = this.app.pm.get('verification') as PluginVerificationServer;
    // El nombre debe corresponder con el utilizado en el cliente
    plugin.smsOTPProviderManager.registerProvider('custom-sms-provider-name', {
      title: tval('Custom SMS provider', { ns: namespace }),
      provider: CustomSMSProvider,
    });
  }
}