Ant Design Pro ログイン機能にグラフィック検証コード コンポーネントを統合する方法

Ant Design Pro ログイン機能にグラフィック検証コード コンポーネントを統合する方法

序文:

この記事では、Ant Design Proログイン機能にグラフィック検証コードコンポーネントを統合する手順のみを紹介します。サーバー側の方法については、「OAuth2.0認証システムに基づく検証コード機能」を参照してください。

文章:

Ant Design Pro テンプレートでは、アカウントとパスワードのログイン機能部分 (以下に示す) にグラフィック検証コードが開発されていないため、この機能を自分で実装する必要があります。ここでのログイン機能は実際にはフォームの送信なので、グラフィック検証コード フォーム コントロールを独自に開発するだけで済みます。具体的な実装は次のとおりです。

1. グラフィック検証コードフォーム制御コードCaptchaInput.tsx:

'react' から React、{useState、useEffect} をインポートします。
'antd' から {Input, message} をインポートします。
'@ant-design/icons' から {SafetyCertificateOutlined} をインポートします。
'@/utils/api' から api をインポートします。
"@/utils/stringUtil" から stringUtil をインポートします。
「@/utils/request」からリクエストをインポートします。
"umi" から {useIntl} をインポートします。
 
 
インターフェース CaptchaInputValue {
  captchaコード?: 文字列;
  captchaKey?: 文字列;
}
 
インターフェース CaptchaInputProps {
  値?: CaptchaInputValue;
  onChange?: (値: CaptchaInputValue) => void;
}
 
/**
 * 認証コードを取得 */
const getCaptcha = 非同期() => {
  試す {
    const データ = リクエストを待機します (api.captcha);
    (データコード === 1)の場合{
      data.data を返します。
    }
  } キャッチ(エラー){
    message.error('部門ツリーを取得できませんでした。もう一度お試しください');
    戻る [];
  }
  message.error('部門ツリーを取得できませんでした。もう一度お試しください');
  戻る [];
}
 
const CaptchaInput: React.FC<CaptchaInputProps> = ({value = {}, onChange}) => {
 
  定数 intl = useIntl();
  const [captchaCode、setCaptchaCode] = useState<文字列>('');
  const [captchaKey、setCaptchaKey] = useState<文字列>('');
  const [imageData, setImageData] = useState<string>('');
 
  // トリガーの変更 const triggerChange = (changedValue: { captchaCode?: string; captchaKey?: string }) => {
    変更があった場合
      onChange({captchaCode、captchaKey、...値、...変更された値});
    }
  };
 
  使用効果(() => {
    getCaptcha().then((データ: any) => {
      キャプチャキーを設定します。
      画像データを設定します。
      トリガーの変更({captchaKey: data.captchaKey});
    })
  }, []);
 
 
  // 入力ボックスの変更 const onChangeInput = (e: React.ChangeEvent<HTMLInputElement>) => {
    const コード = e.target.value || '';
    (stringUtil.isNotEmpty(コード))の場合{
      CaptchaCodeを設定します(コード)。
    }
    トリガー変更({captchaCode: コード});
  }
 
  // 時間型の変更 const onClickImage = () => {
    getCaptcha().then((データ: any) => {
      キャプチャキーを設定します。
      画像データを設定します。
      トリガーの変更({captchaKey: data.captchaKey});
    })
  };
 
  戻る (
    <span>
       <Input.Group コンパクト>
          <Input prefix={<SafetyCertificateOutlined style={{color: "#319cff"}}/>} placeholder={intl.formatMessage({
            id: 'pages.login.captcha.placeholder',
            defaultMessage: '認証コードを入力してください',
          })}
                 onChange={onChangeInput}
                 スタイル={{幅: '75%', マージン右: 5, パディング: '6.5px 11px 6.5px 11px', 垂直配置: 'middle'}}/>
                   <img style={{幅: '23%', 高さ: '35px', 垂直配置: 'middle', パディング: '0px 0px 0px 0px'}}
                        src={imageData} onClick={onClickImage}/>
       </Input.Group>
    </span>
  );
};
デフォルトの CaptchaInput をエクスポートします。

2. ログインページ統合コンポーネント:

'./components/CaptchaInput' から CaptchaInput をインポートします。
 
…… 
 
  const handleSubmit = (値: LoginParamsType) => {
    const { ディスパッチ } = props;
    values.client_id = "hanxiaozhang";
    values.client_secret = "hanxiaozhang";
    values.scope = "hanxiaozhang";
    values.grant_type = "パスワード";
    値.captcha_key = 値.captchaComp.captchaKey;
    値.captcha_code = 値.captchaComp.captchaCode;
    values.captchaComp を削除します。
    急送({
      タイプ: 'ログイン/ログイン'、
      ペイロード: {...値、タイプ},
    });
  };
 
…… 
 
            <Form.Item name="captchaComp" ルール={[{
              検証トリガー: 'onBlur'、
              バリデータ: async (ルール, 値) => {
                // console.log(ルール)
                (文字列ユーティリティが空の場合(値キャプチャコード)){
                  throw new Error('確認コードを入力してください!');
                }
              }
            },]}>
              <キャプチャ入力/>
            </フォーム.アイテム>
 
……

3. 使用方法:

統合後の効果は次のとおりです。

上記は、Ant Design Pro ログイン機能にグラフィック検証コード コンポーネントを統合する詳細です。Ant Design Pro ログインの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • AntDesign Pro + .NET CoreはJWTベースのログイン認証機能を実装します
  • Ant Design Proメニューカスタムアイコンについての簡単な説明
  • Ant Design Pro における制御可能なフィルタリングと並べ替えの例
  • Ant Design ProでProTableを使用する方法
  • antデザインでthis.props.form.validateFieldsが実行されない問題を解決する
  • Ant Design Pro でのファイルダウンロードの実装コード

<<:  MySQL でデータ復旧に binlog を使用する方法

>>:  Maven+Tomcat 基本イメージを構築する Docker の実装

推薦する

MySQL内部一時テーブルの具体的な使用法

目次連合テーブルの初期化ステートメントの実行連合の結果ユニオンオールグループ化十分なメモリステートメ...

Linux seqコマンドの使い方

1. コマンドの紹介seq (シーケンス) コマンドは、指定されたステップ サイズに従って、開始番号...

MySQL 同時実行制御の原則に関する知識ポイント

Mysql は、高性能なデータ ストレージ サービスを提供する主流のオープン ソース リレーショナル...

Linuxサーバーのファイアウォールを変更してポートへのリモートアクセスを許可する方法

1. 問題の説明セキュリティ上の理由から、新しく構築されたサーバー クラスターでは、指定されたポート...

Linux の Docker コンテナで bash を終了する 2 つの方法

bash を終了する場合は、次の 2 つのオプションがあります。最初のもの: Ctrl + d を押...

CSSアニメーションを使用して背景のシームレスな無限ループを実装する例

1. 需要絵が左から右へ無限ループで動く2. コードモバイルデバイスに適用されているため、rem 単...

MySQL MHA 操作ステータス監視の概要

目次1. プロジェクトの説明1.1 背景1.2 実装設計1.2.1 従来の方法1.2.2 最適化され...

MySQLでテーブル名を変更する方法と注意すべき点

目次1. テーブル名を変更する方法2. 注記要約: 1. テーブル名を変更する方法RENAME TA...

MySQL 8.0.12 クイックインストールチュートリアル

MySQL 8.0.12 のインストールには 2 日かかり、さまざまな問題が発生しました。以下にまと...

Centos7.5 は mysql5.7.24 バイナリ パッケージの展開をインストールします

1. 環境整備:オペレーティング システム: CentOS Linux リリース 7.5.1804 ...

MySQL トリガーの原理と使用例の分析

この記事では、例を使用して、MySQL トリガーの原理と使用方法を説明します。ご参考までに、詳細は以...

Vue.jsは画像切り替え機能を実装する

この記事では、画像切り替え機能を実装するためのVue.jsの具体的なコードを参考までに共有します。具...

HTML タグ tbody の使い方と説明

tbody 要素は、thead 要素および tfoot 要素と組み合わせて使用​​する必要があります...

Linux で大容量メモリ ページを持つ Oracle データベースを最適化する方法

序文PC サーバーは今日まで発展を続け、パフォーマンスにおいて大きな進歩を遂げてきました。 64ビッ...

純粋な CSS で DIV サスペンションを実装するサンプル コード (固定位置)

DIV フローティング効果 (固定位置) は CSS のみで実装されており、IE8、360、Fir...