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 の実装

推薦する

Docker Composeオーケストレーションツールの詳細な説明

Docker の作成Docker Compose は、複数の Docker コンテナを定義して実行す...

MySQL 8.0.15 インストール グラフィック チュートリアルとデータベースの基礎

MySQLソフトウェアのインストールとデータベースの基礎は参考用です。具体的な内容は次のとおりです。...

MYSQLストアドプロシージャコメントの詳細な説明

目次1. 使用方法2. 準備3. 文法3.1 変数と代入3.2 入力および出力パラメータ3.3 プロ...

MySQLにおける遅いSQLの最適化の方向性について詳しく話しましょう

目次序文SQL文の最適化遅いクエリSQLを記録する設定を変更する方法スロークエリログを表示するSQL...

HTMLは読み取り専用のテキストボックスを実装しており、コンテンツを変更することはできません。

さっそく、コードを直接投稿します。具体的なコードは次のとおりです。 <!--方法 1: onf...

Linux コマンドラインからファイルを削除する実用的な方法

rm コマンドrm コマンドは、ファイルを削除するときによく使用されるコマンドです。ファイルまたはデ...

vue-resource インターセプターの使用に関する詳細な説明

序文インターセプター最近のフロントエンド フレームワークでは、インターセプターは基本的に非常に基本的...

MySQL 8.0.15 のインストールと設定方法のグラフィックチュートリアル (Win10 Home バージョン 64)

超初心者の私は、MySQL を学び始めたばかりで、インストール プロセス中に多くの問題に遭遇しました...

ウェブ開発におけるクロスドメインの理由に対する複数のソリューション

目次クロスドメインの理由JSONP Nginxソリューションバックエンドソリューションクロスドメイン...

CentOS システムでの JDK のインストールと設定の概要

目次序文OpenJDKの確認とアンインストールダウンロードした圧縮パッケージを使用してJDKをインス...

sshとは何ですか?使い方は?どのような誤解があるのでしょうか?

目次序文SSHとは何かssh は何に使用されますか? sshの使い方ssh 再修正要約する序文ssh...

HTML の div、td、p およびその他のコンテナーでの強制改行と非改行の実装

1. 改行を強制せず、省略記号で終了します。コードをコピーコードは次のとおりです。 <div ...

虫眼鏡ケースのJavaScriptオブジェクト指向実装

この記事では、参考までに、虫眼鏡のJavaScriptオブジェクト指向実装の具体的なコードを紹介しま...

MySQL 8.0.15 winx64 圧縮パッケージのインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.15 winx64 圧縮パッケージのインストールと設定方法を参考ま...

Vue.js と MJML でレスポンシブなメールを作成する

MJML は、開発者が美しく、応答性に優れ、あらゆるデバイスやメール クライアントで動作する魅力的な...