So integrieren Sie die grafische Verifizierungscode-Komponente in die Ant Design Pro-Anmeldefunktion

So integrieren Sie die grafische Verifizierungscode-Komponente in die Ant Design Pro-Anmeldefunktion

Vorwort:

In diesem Artikel werden nur die Schritte zum Integrieren der grafischen Verifizierungscodekomponente in die Ant Design Pro-Anmeldefunktion vorgestellt. Informationen zur serverseitigen Methode finden Sie unter „Verifizierungscodefunktion basierend auf dem OAuth2.0-Autorisierungssystem“.

Text:

In der Ant Design Pro-Vorlage wurde für den Teil der Konto- und Kennwort-Anmeldefunktion (siehe unten) kein grafischer Bestätigungscode entwickelt. Daher müssen wir diese Funktion selbst implementieren. Die Anmeldefunktion hier ist eigentlich eine Formularübermittlung, daher müssen wir nur selbst ein grafisches Bestätigungscode-Formularsteuerelement entwickeln. Die konkrete Implementierung ist wie folgt.

1. Grafischer Bestätigungscode-Formular-Kontrollcode CaptchaInput.tsx:

importiere React, {useState, useEffect} von „react“;
importiere {Eingabe, Nachricht} von 'antd';
importiere {SafetyCertificateOutlined} aus '@ant-design/icons';
API aus „@/utils/api“ importieren;
importiere stringUtil aus "@/utils/stringUtil";
Importiere die Anfrage aus "@/utils/request";
importiere {useIntl} von "umi";
 
 
Schnittstelle CaptchaInputValue {
  CaptchaCode?: Zeichenfolge;
  CaptchaKey?: Zeichenfolge;
}
 
Schnittstelle CaptchaInputProps {
  Wert?: CaptchaInputValue;
  beiÄnderung?: (Wert: CaptchaInputValue) => ungültig;
}
 
/**
 * Bestätigungscode erhalten */
const getCaptcha = async () => {
  versuchen {
    const data = warte auf Anfrage(api.captcha);
    wenn (Datencode === 1) {
      Daten.Daten zurückgeben;
    }
  } Fehler abfangen {
    message.error('Abteilungsbaum konnte nicht abgerufen werden. Bitte versuchen Sie es erneut.');
    zurückkehren [];
  }
  message.error('Abteilungsbaum konnte nicht abgerufen werden. Bitte versuchen Sie es erneut.');
  zurückkehren [];
}
 
const CaptchaInput: React.FC<CaptchaInputProps> = ({value = {}, onChange}) => {
 
  const intl = useIntl();
  const [captchaCode, setCaptchaCode] = useState<string>('');
  const [captchaKey, setCaptchaKey] = useState<string>('');
  const [imageData, setImageData] = useState<string>('');
 
  // Änderung auslösen const triggerChange = (changedValue: { captchaCode?: string; captchaKey?: string }) => {
    wenn (beiÄnderung) {
      beiÄnderung({CaptchaCode, CaptchaSchlüssel, ...Wert, ...geänderterWert});
    }
  };
 
  useEffect(() => {
    getCaptcha().then((Daten: beliebig) => {
      setCaptchaKey(Daten.captchaKey);
      setImageData(Daten.Bild);
      triggerChange({captchaKey: data.captchaKey});
    })
  }, []);
 
 
  // Änderungen im Eingabefeld const onChangeInput = (e: React.ChangeEvent<HTMLInputElement>) => {
    const code = e.ziel.wert || '';
    wenn (stringUtil.isNotEmpty(code)) {
      setzeCaptchaCode(Code);
    }
    triggerChange({captchaCode: code});
  }
 
  // Zeittypänderungen const onClickImage = () => {
    getCaptcha().then((Daten: beliebig) => {
      setCaptchaKey(Daten.captchaKey);
      setImageData(Daten.Bild);
      triggerChange({captchaKey: data.captchaKey});
    })
  };
 
  zurückkehren (
    <span>
       <Eingabe.Gruppe kompakt>
          <Eingabepräfix={<SafetyCertificateOutlined style={{color: "#319cff"}}/>} Platzhalter={intl.formatMessage({
            ID: "pages.login.captcha.placeholder",
            defaultMessage: 'Bitte geben Sie den Bestätigungscode ein',
          })}
                 beiÄnderung={beiÄnderungseingabe}
                 Stil = {{Breite: '75 %', rechter Rand: 5, Polsterung: '6,5px 11px 6,5px 11px', vertikale Ausrichtung: 'Mitte'}}/>
                   <img Stil = {{Breite: '23 %', Höhe: '35px', vertikale Ausrichtung: 'Mitte', Polsterung: '0px 0px 0px 0px'}}
                        src={Bilddaten} beim Klicken={beiKlickBild}/>
       </Eingabe.Gruppe>
    </span>
  );
};
Standard-CaptchaInput exportieren;

2. Integrationskomponenten der Anmeldeseite:

importiere CaptchaInput aus „./components/CaptchaInput“;
 
... ... 
 
  const handleSubmit = (Werte: LoginParamsType) => {
    const { dispatch } = Requisiten;
    Werte.Client_ID = "hanxiaozhang";
    Werte.client_secret = "hanxiaozhang";
    Werte.Umfang = "hanxiaozhang";
    values.grant_type = "Passwort";
    Werte.captcha_key = Werte.captchaComp.captchaKey;
    Werte.Captcha_Code = Werte.CaptchaComp.CaptchaCode;
    lösche values.captchaComp;
    versenden({
      Typ: 'login/login',
      Nutzlast: {...Werte, Typ},
    });
  };
 
... ... 
 
            <Form.Item name="captchaComp" Regeln={[{
              validateTrigger: 'beiUnschärfe',
              Validator: async (Regel, Wert) => {
                // console.log(Regel)
                wenn (stringUtil.isEmpty(value.captchaCode)) {
                  throw new Error('Bitte geben Sie den Bestätigungscode ein!');
                }
              }
            },]}>
              <CaptchaInput/>
            </Form.Item>
 
... ...

3. Verwendung:

Der Effekt nach der Integration ist wie folgt:

Oben sind die Details zur Integration der grafischen Verifizierungscodekomponente in die Ant Design Pro-Anmeldefunktion aufgeführt. Weitere Informationen zur Ant Design Pro-Anmeldung finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • AntDesign Pro + .NET Core implementiert eine JWT-basierte Login-Authentifizierungsfunktion
  • Eine kurze Erläuterung des benutzerdefinierten Menüsymbols von Ant Design Pro
  • Steuerbare Filter- und Sortierbeispiele in Ant Design Pro
  • So verwenden Sie ProTable in Ant Design Pro
  • Lösen Sie das Problem, dass this.props.form.validateFields im Ant-Design nicht ausgeführt wird
  • Implementierungscode für den Dateidownload unter Ant Design Pro

<<:  So verwenden Sie Binlog zur Datenwiederherstellung in MySQL

>>:  Implementierung des Docker-Buildings für Maven+Tomcat-Basisimages

Artikel empfehlen

HeidiSQL-Tool zum Exportieren und Importieren von MySQL-Daten

Um den Export und Import von Daten in SQL zu erle...

So verwenden Sie React zur Implementierung einer Bilderkennungs-App

Lassen Sie mich Ihnen zuerst das Effektbild zeige...

Vue.js verwaltet die Kapselung von Hintergrundtabellenkomponenten

Inhaltsverzeichnis Problemanalyse Warum Kapselung...

Analyse der Unfallursachen durch Unicode-Signatur BOM

Möglicherweise verwenden Sie hier Include-Dateien,...

Detaillierte Erklärung der JavaScript-Timer

Inhaltsverzeichnis Kurze Einleitung Intervall fes...

Native js implementiert Warenkorb-Logik und -Funktionen

In diesem Artikelbeispiel wird der spezifische Co...

Implementierung eines Random Roll Callers basierend auf JavaScript

In diesem Artikel wird der spezifische JavaScript...

So verstehen Sie die Modularität von JavaScript

Inhaltsverzeichnis 1. Browserunterstützung 2. Exp...

Detaillierte Erklärung von Group By und Having in MySQL

Mit der GROUP BY-Syntax können die Abfrageergebni...

Details zur Bündelung statischer Ressourcen ohne JavaScript

Inhaltsverzeichnis 1. Benutzerdefinierter Import ...