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

So lösen Sie das jQuery-Konfliktproblem

In der Frontend-Entwicklung ist $ eine Funktion i...

So spielen Sie lokale Mediendateien (Video und Audio) mit HTML und JavaScript ab

Erstens kann JavaScript aus Sicherheitsgründen ni...

Installationsprozess von CentOS8 Linux 8.0.1905 (Abbildung)

Die aktuellste Version von CentOS ist CentOS 8. A...

Die perfekte Lösung zum Hervorheben von Schlüsselwörtern in HTML

Bei der Arbeit an einem Projekt bin ich kürzlich ...

SQL GROUP BY ausführliche Erklärung und einfaches Beispiel

Die GROUP BY-Anweisung wird in Verbindung mit der...

So verwalten Sie zwischengespeicherte Seiten in Vue

Inhaltsverzeichnis Problem 1: Zerstörung 1. Wie m...

RHEL7.5 MySQL 8.0.11 Installations-Tutorial

Dieser Artikel zeichnet das Installationstutorial...

Analyse der Verschachtelungsregeln von XHTML-Tags

In der XHTML-Sprache wissen wir alle, dass das ul...

Kurze Analyse des MySQL B-Tree-Index

B-Baum-Index Verschiedene Speicher-Engines können...

Beispiel für die Konvertierung eines Zeitstempels in ein Datum in MySQL

Vorwort Ich bin bei der Arbeit auf folgende Situa...

Docker-Lösung zum Anmelden ohne Root-Rechte

Wenn Sie den Docker-Befehl zum ersten Mal verwend...

Die Verwendung und der Unterschied zwischen JavaScript-Pseudo-Array und Array

Pseudo-Arrays und Arrays In JavaScript sind mit A...

SVN-Installation und grundlegende Bedienung (grafisches Tutorial)

Inhaltsverzeichnis 1. Was ist SVN? 2. Methoden zu...