Vue3+Vue-cli4 プロジェクトで Tencent スライダー検証コードを使用する方法

Vue3+Vue-cli4 プロジェクトで Tencent スライダー検証コードを使用する方法

導入:

従来の画像検証コードと比較して、スライダー検証コードには次の利点があります。

  • サーバーは検証コードの特定の検証を検証する必要はなく、検証結果のみを検証する必要があります。
  • 検証コードの実装を理解する必要はなく、具体的に実装する必要もありません。
  • スライダー検証コードのセキュリティ レベルは、従来の検証コードよりもはるかに高くなっています。
  • ...

インターネット上のVue3の統合APIとTencent APIドキュメントに、Tencentのスライダー検証コードを適用する方法に関する情報が不足しているため、このチュートリアルが提供されています。私は Vue の専門家ではなく、Vue の理解も基本的な使い方のレベルに留まっています。間違いがあれば指摘してください。

始める:

まず、Tencent Cloud にアクセスしてグラフィックス検証 API を申請し、独自の使用シナリオを選択する必要があります。手順を完了すると、CaptchaAppId と AppSecretKey が取得されます。これら 2 つは、後で結果を確認するためにサーバーによって使用されるパラメーターです。

Vue3 で使用するには、まず public フォルダの index.html に Tencent 検証コード js をインポートする必要があります。

<script src="https://ssl.captcha.qq.com/TCaptcha.js"></script>

スライダー検証コードを使用する必要があるコンポーネントで、ログイン ボタンのメソッドをバインドします。そして、フォーム オブジェクトに次の 2 つのフィールドticketrandstr追加します。

私の例を次のように書きます

エクスポートデフォルト{
    名前: "ログイン",
    設定() {
        const loginForm = リアクティブ({
            アカウント名: ''、
            アカウントパスワード: ''、
            チケット: ''、
            文字列: ''
        })
        戻る {
            ログインフォーム
        }
    }
}

ログインボタンのバインディング方法

エクスポートデフォルト{
    名前: "ログイン",
    設定() {
        const loginForm = リアクティブ({
            アカウント名: ''、
            アカウントパスワード: ''、
            チケット: ''、
            文字列: ''
        })
 
        const loginPost = () => {
 
            captcha = new window.TencentCaptcha(config.app_id, res => { を設定します。
                loginForm.randstr = res.randstr;
                loginForm.ticket = res.ticket;
 
                userLogin(loginForm).then(resp => {
 
                    (応答コード === 200)の場合{
                        //ログイン成功後のロジック} else {
                        //ログイン失敗後のロジック}
                }).catch(() => {
                    ElMessage.error({
                        メッセージ: 'システムエラー!後でもう一度お試しください。 '
                    })
                })
            })
            キャプチャを表示します。
        }
 
        戻る {
            ログイン投稿、
            ログインフォーム
        }
    }
}

上記はvueで記述したコードですが、ユーザーが検証コードを入力する操作のみを実装しています。具体的な最終判定ロジックはバックエンドで実装する必要があります。検証操作を実装するために、バックエンドで Springboot を使用します。

まず、Tencent SDKのMaven依存関係を導入する必要があります。

<!-- Tencent SDK スライダー検証コードの依存関係 -->
<依存関係>
  <グループ ID>com.tencentcloudapi</グループ ID>
  <artifactId>テンセントクラウド SDK-Java</artifactId>
  <バージョン>4.0.11</バージョン>
</依存関係>

utils パッケージに新しいクラスを作成します。

パブリッククラス DescribeCaptchaResult {
    @Value("${Tencent.SecretId}")
    プライベート文字列 secretId;
 
    @Value("${Tencent.SecretKey}")
    プライベート文字列 secretKey;
 
    @Value("${Tencent.CaptchaAppId}")
    プライベート int captchaAppId;
 
    @Value("${Tencent.AppSecretKey}")
    プライベート文字列 appSecretKey;
 
    パブリックJSONObject getTencentCaptchaResult(文字列チケット、文字列randstr、文字列userIp) {
        試す {
            // 認証オブジェクトをインスタンス化します。パラメータは、Tencent Cloud アカウントの secretId と secretKey で渡す必要があります。ここでは、キー ペアの機密性にも注意する必要があります。// キーは https://console.cloud.tencent.com/cam/capi で取得できます。Credential cred = new Credential(secretId, secretKey);
            // http オプションをインスタンス化します (オプション)。特別な要件がない場合は HttpProfile をスキップできます。httpProfile = new HttpProfile();
            エンドポイントを設定します。
            // クライアント オプションをインスタンス化します (オプション)。特別な要件がない場合は ClientProfile をスキップできます。clientProfile = new ClientProfile();
            クライアント プロファイル。httpProfile を設定します。
            // 製品をリクエストするためにクライアント オブジェクトをインスタンス化します。clientProfile はオプションです。CaptchaClient client = new CaptchaClient(cred, "", clientProfile);
            //リクエスト オブジェクトをインスタンス化します。各インターフェイスはリクエスト オブジェクトに対応します。DescribeCaptchaResultRequest req = new DescribeCaptchaResultRequest();
            キャプチャタイプを設定する必要があります(9L);
            チケットを要求します。
            必須:
            ユーザーIPを設定します。
            キャプチャアプリIDを設定します。
            appSecretKey を要求します。
            // 返される resp は、リクエスト オブジェクトに対応する DescribeCaptchaResultResponse のインスタンスです。DescribeCaptchaResultResponse resp = client.DescribeCaptchaResult(req);
            // 文字列をJSON形式で出力します。 return JSONObject.parseObject(DescribeCaptchaResultResponse.toJsonString(resp));
        } キャッチ (TencentCloudSDKException e) {
            新しい ServiceException をスローします (e.getMessage());
        }
    }
}

以下は、このクラスに必要なパラメータの内訳です。

パラメータ分析
シークレットID SecretId は Tencent Cloud アカウントの API キー ID です (認証にはサブアカウントを使用することをお勧めします)
秘密鍵SecretKeyはTencent CloudアカウントのAPIキーです(認証にはサブアカウントを使用することをお勧めします)
キャプチャアプリID captchaAppIdは、申請したTencent認証コードAPIキーです。
アプリシークレットキーappSecretKeyは、申請したTencent認証コードAPIキーです。
チケットチケットは、フロントエンドスライダーの検証コードが検証された後に返されるパラメータです。
ランドストリングrandstrは、フロントエンドのスライダー検証コードの検証後に返されるパラメータです。
ユーザーIP userIpはビジネスレイヤーによって取得されたIPです
パラメータを指定して送信すると、DescribeCaptchaResultResponse 型のデータが返されます。これを解析用に FastJson の JSONObject 型に変換します。返されるデータ構造は次のとおりです。

{
"応答": {
  "リクエストID": "3b61a17b-cb38-470e-802c-b6242faf81ac",
  「キャプチャコード」: 1,
  「キャプチャメッセージ」: 「OK」、
  "邪悪レベル": 0,
  「キャプチャ時間を取得」: 1583749870
},
"戻りコード": 0,
"retmsg": "成功"
}

その他の特定のパラメータについては、Tencent API ドキュメントを参照してください: https://cloud.tencent.com/document/product/1110/36926

ここで CaptchaCode の値を読み取ります。値が 1 の場合、検証コードは正常に検証されています。1 でない場合、検証は失敗します。

//検証コードを検証します JSONObject tencentCaptchaResult = captchaResult.getTencentCaptchaResult(ticket, randstr, clientIp);
 
int captchaCode = Integer.parseInt(tencentCaptchaResult.getString("CaptchaCode"));
 
 
キャプチャコードが 1 の場合
    throw new ServiceException("検証コードエラー!");
}
//...後続のビジネスロジック

フォローアップ

Tencent Cloud では、検証コードのテーマ、検証コードのシーン構成、検証コードの悪意のある傍受のレベルなど、検証コードに対してさらに多くの設定を行うことができます。 。

バックグラウンドでの確認コードリクエストの数も確認できます

バックエンドとフロントエンドをさらにカプセル化することで、コードをより簡潔にできると思います。 Alibaba Cloud には、私がまだ試していない他の新しい認証コードがあります。個人的には、Tencent の認証コードは使い勝手がかなり良いと感じていますが、API ドキュメントが少し貧弱で、情報が非常に少ないです。

Vue3+Vue-cli4 プロジェクトで Tencent スライダー検証コードを使用する方法については、これで終わりです。より関連性の高い vue Tencent スライダー検証コード コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vue+elementui でスライダーのドラッグパズル検証を実現
  • Vue がモバイル スライダー検証を実装
  • Vueはログイン時にスライダー検証を実装します
  • スライダー検証のために Vue と Alibaba Cloud を統合する実践
  • Vueはシンプルなスライダー検証を実装する
  • konva および vue-konva ライブラリを使用してドラッグスライダー検証機能を実装します。
  • VUEアクセステンセント認証コード機能(スライダー認証)メモ
  • Vue はドラッグ スライダー検証機能を実装します (バックグラウンド検証手順のない CSS + JS のみ)
  • vue-cli カスタムディレクティブ ディレクティブ 検証スライダーの追加例
  • Vueで画像スライダー検証コンポーネントをカプセル化する方法

<<:  CSS でデフォルトのスタイルをクリアし、共通のスタイルを設定する方法

>>:  HTMLの基本構文は、HTMLを学び始めたばかりの人にとって便利です。

推薦する

CocosCreatorでクールなレーダーチャートを描く方法

目次序文プレビュー文章グラフィックコンポーネントプロパティ機能グリッドを描く軸角度を計算するスケール...

JS関数の継承について学ぶ記事

目次1. はじめに: 2. プロトタイプチェーン継承: 3. コンストラクタ継承の借用(オブジェクト...

CSS における z-index: 0 と z-index: auto の違い

最近、スタック コンテキストについて学習しています。学習の過程で、z-index が 0 の場合と ...

Linux Tensorflow2.0のインストール問題を解決する

conda アップデート conda pip で tf-nightly-gpu-2.0-previ...

CSS3 を使用して左上または右上隅にリマインダー ドットを表示するサンプル コード

効果画像(三角形をご希望の場合は、ここをクリックしてください): コード: <html>...

Vue Elementのテーブルコンポーネントをカプセル化する方法

Vue コンポーネントをカプセル化する場合でも、機能コンポーネントをクロスファンクショナルに使用しま...

Centos7 環境でバイナリ インストール パッケージから mysql5.6 をインストールする方法の詳細な説明

この記事では、centos7 環境でバイナリ インストール パッケージを使用して mysql5.6 ...

Vue 大画面データ表示例

効率的に要件を満たし、コンポーネント ライブラリの肥大化や車輪の再発明を避けるために、私は以前、大画...

MySQL 8.0 が起動できない 3534 の解決策

MySQL 8.0 サービスを開始できません最近、 cmdで MySQL サービスを起動するときに遭...

FirefoxでCookieとお気に入りをインポートおよびエクスポートする方法

Firefox は、多くの拡張機能とプラグインを備えた、よく使用されるブラウザです。IE に比べて多...

Linux で ping は成功するがポートが利用できない問題を解決する方法

ping は成功したがポートにアクセスできない場合のポート可用性検出の説明ポート可用性検出ツールの紹...

MySQLデータベースが大きすぎる場合にバックアップと復元を行う方法

コマンド: mysqlhotcopyこのコマンドは、ファイルをコピーする前にテーブルをロックし、不完...

知っておくべき 7 つのネイティブ JS エラーの種類

目次概要1. 範囲エラー2. 参照エラー3. 構文エラー4. タイプエラー5. URIエラー6. 評...

Linux での sshd サービスとサービス管理コマンドの詳細な説明

sshd SSH は Secure Shell の略で、アプリケーション層のセキュリティ プロトコル...

WeChatアプレットが弾丸画面を送信するビデオプレーヤーを実装

この記事では、WeChatアプレットでビデオプレーヤーの集中砲火を実装するための具体的なコードを参考...