Vue+Spring Bootで検証コード機能を実現

Vue+Spring Bootで検証コード機能を実現

この記事では、検証コード機能を実装するためのvue+spring bootの具体的なコードを例として紹介します。具体的な内容は以下のとおりです。

試してみるために、vue を使用して検証コードを作成しました。次のようになります。

1.imgタグ

<画像
     = "高さ:40px; 幅: 100px; カーソル: ポインター;"
     ref="画像識別コード"
     :src="選択したロゴ画像.imgUrl"
     クラス="logoImg"
 >

2.jsコード

/**
     * 認証コードを取得 */
    識別コードを取得する() {
      selft = this とします。
      //pic = this.$refs.imgIdentifyingCode とします
      自己t.loadingChack = true;
      uuid = Utils.getUuid(32, 16); とします。
      this.$store.state.uuid = uuid;
      this.$api.reader.getVerify() を実行します。
        { レスポンスタイプ: "arraybuffer", uuid: uuid },
        r => {
          selft.loadingChack = false;
          selft.selectedLogoPicture.imgUrl = "data:image/png;base64," + r;
        }
      );
    },

3.コントローラー

@RequestMapping("/getVerify")
 public void getVerify(@RequestParam String uuid、HttpServletRequest リクエスト、HttpServletResponse レスポンス) {
  response.setContentType("image/jpeg"); // 出力コンテンツが画像であることをブラウザに伝えるためにレスポンス タイプを設定します。 response.setHeader("Pragma", "No-cache"); // レスポンス ヘッダー情報を設定し、このコンテンツをキャッシュしないようにブラウザに伝えます。 response.setHeader("Cache-Control", "no-cache");
  response.setDateHeader("有効期限", 0);
  userService.getRandcodedDawTransparent(uuid, request, response); // 検証コード画像出力メソッド}

4.サービス

@オーバーライド
 パブリック void getRandcodedDawTransparent(String uuid, HttpServletRequest リクエスト, HttpServletResponse レスポンス) {
  試す {
   マップ<String, Object> map = CodeUtil.getRandcodedDawTransparent();
   //生成されたランダム文字列をセッションに保存します。log.info("==saved uuid:"+uuid);
   log.info("==保存されたコード:"+map.get("code"));
   sessionUtil.saveCode(uuid、map.get("コード"));

   レスポンスのContentTypeを"image/png"に設定します。
   出力ストリーム out = response.getOutputStream();

   out.write((byte[]) map.get("img"));
   出力をフラッシュします。
   out.close();
  } キャッチ (IOException e) {
   ログエラー(e.getMessage());
  }
 }

5.ユーティリティ

パブリック静的Map<String, Object> getRandcodedDawTransparent() はIOExceptionをスローします {
  Map<String, Object> rsMap = 新しい HashMap<>();
  // BufferedImage オブジェクトを作成します。 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
  // Graphics2D を取得
  Graphics2D g2d = image.createGraphics();

  // 背景を透明にするには次のコードを追加します image = g2d.getDeviceConfiguration().createcompatibleImage(width, height, Transparency.TRANSLUCENT);
  g2d.dispose();
  g2d = image.createGraphics();

  g2d.setFont(new Font("Times New Roman", Font.ROMAN_BASELINE, 18));// フォントサイズ g2d.setColor(getRandColor(110, 133));// フォント色 // 干渉線を描画 for (int i = 0; i <= lineSize; i++) {
   drowLine(g2d, 幅, 高さ);
  }
  // ランダムな文字を描画します String randomString = "";
  (int i = 1; i <= stringNum; i++) の場合 {
   ランダム文字列 = drowString(g2d, ランダム文字列, i);
  }
  log.info(ランダム文字列);
  rsMap.put("コード", ランダム文字列);
  g2d.dispose();
  ByteArrayOutputStream baos = new ByteArrayOutputStream(); // io ストリーム ImageIO.write(image, "png", baos); // ストリームに書き込む byte[] bytes = baos.toByteArray(); // バイトに変換する bytes = Base64.encodeBase64(bytes);
  rsMap.put("img", バイト);

  rsMapを返します。
 }

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • グラフィック検証コードSMS送信機能付きVueコンポーネント開発LeanCloud

<<:  UbuntuでMySQLデータベースファイルディレクトリを変更する方法

>>:  Virtualbox で Ubuntu 16.04 の起動時に共有ディレクトリを自動的にマウントする最良の方法

推薦する

jsはクリックしてカードを切り替える機能を実現します

この記事の例では、クリックしてカードを切り替える機能を実現するためのjsの具体的なコードを共有してい...

MySQLインデックスの失敗の典型的なケース

目次典型的なケース付録: 一般的なインデックス障害の状況典型的なケース次の構造を持つ 2 つのテーブ...

Linux スケジュールタスクの関連操作の概要

皆様の参考と操作を容易にするために、様々な主要ウェブサイトを検索し、関連するスケジュールされたタスク...

htm 初心者ノート(初心者は必ず読んでください)

1. HTMLとは何かHTML (ハイパーテキスト マークアップ言語): ハイパーテキスト マーク...

Vue Element-ui テーブルはツリー構造テーブルを実現します

この記事では、ツリー構造テーブルを実現するためのElement-uiテーブルの具体的なコードを参考ま...

HTML フォームとフォーム内部タグの使用

コードをコピーコードは次のとおりです。 <html> <ヘッド> <t...

Nginx リバース プロキシと負荷分散を実装する方法 (Linux ベース)

ここで nginx のリバース プロキシを試してみましょう。リバースプロキシ方式とは、インターネット...

JavaScript の条件付きアクセス属性と矢印関数の紹介

目次1. 条件付きアクセス属性2. アロー関数の紹介1. 条件付きアクセス属性?. は ES2020...

Vue2.x プロジェクトのパフォーマンス最適化のためのコード最適化の実装

目次1 v-ifとv-showの使用2. 計算と監視を区別する3 v-for トラバーサルでは、アイ...

MySQL 5.7.17 でパスワードを忘れた場合の対処方法

1. my.iniファイルにskip-grant-tablesを追加し、MySQLサーバーを再起動し...

Linux ログ表示方法 6 つのまとめ

バックエンド プログラマーは、さまざまな場所で Linux を扱います。Linux ログの読み方がわ...

回転灯効果を実現するWeChatアプレットの例

序文日常の開発では、テキストの水平スクロール効果(一般にカルーセルと呼ばれる)によく遭遇します。これ...

MySQLへの外部ネットワークアクセスを許可し、MySQLアカウントのパスワードを変更する方法

mysqlのrootアカウント、普段はlocalhostか127.0.0.1で接続しています。会社の...

MySQLの指定されたテーブルからデータをエクスポートする例の詳細な説明

指定されたテーブルからデータをエクスポートするMySQLの詳細な説明必要とする: 1. テーブルはす...

きちんとしたHTMLマークアップを使用してページを構築します

インターネットは絶えず進化する有機体です。長期にわたってインターネットの発展に適応できるページを構築...