Vue はブラウザのパスワード記憶機能を無効にするサンプル コードを実装します

Vue はブラウザのパスワード記憶機能を無効にするサンプル コードを実装します

情報を探す

インターネットで見つかったいくつかの方法:

  • autocomplete="off" を使用します (多くの最新ブラウザではサポートされていません)
  • autocomplete="new-password" を使用します
  • 実際のアカウントとパスワードボックスの前に同じ名前の入力ボックスを追加します
  • 読み取り専用属性を使用し、フォーカスされたら削除する
  • 入力ボックスの type 属性をテキストに初期化し、フォーカスされたときにパスワードに変更します。
  • type="text" を使用して、テキスト ボックスの内容を手動でアスタリスク「*」またはドット「●」に置き換えます。

実装プロセス

使用されるフィールド

データ() {
 戻る {
   ユーザー名: ''、
    パスワード: ''、
  }
}

最近のブラウザは autocomplete="off" をサポートしなくなったため、パスワード ボックスの設定をあきらめて、autocomplete="new-password" を直接使用しました。Chrome (v88.0.4324.104)、Edge (v88.0.705.56)、Firefox (v67) で動作することをテストしましたが、Firefox (v85) ではパスワードを思い出すように求められます。

<el-input v-model="ユーザー名" type="text" name="text" placeholder="アカウント" autocomplete="オフ"><i slot="プレフィックス" class="el-input_icon el-icon-user"></i></el-input>

<el-input v-model="password" type="password" name="pwd" id="pwd" placeholder="password" autocomplete="新しいパスワード"></el-input>

参照:

https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/フォームの自動補完をオフにする

https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#browser_compatibility

Firefox の高バージョンプロンプトを解決する過程で、方法 3/4/5 を試しましたが、結果は満足のいくものではありませんでした。ただし、Firefox の最終パスワード ボックスの値がアスタリスク「*」または小さなドット「●」である限り、パスワードを記憶するように要求されないことがわかりました (正しいかどうかはわかりません。自分でテストできます)。そこで、入力ボックスを関連付けるために新しいフィールド pwdCover を追加し、password を使用して実際に値を渡します。

寺院

<el-input v-model="ユーザー名" type="text" name="text" placeholder="アカウント" autocomplete="オフ"><i slot="プレフィックス" class="el-input_icon el-icon-user"></i></el-input>

<el-input v-model="pwdCover" type="password" name="pwd" id="pwd" placeholder="password" autocomplete="new-password"@input="setPassword"></el-input>
スクリプト
データ() {
 戻る {
   ユーザー名: ''、
    パスワード: ''、
    pwdカバー: '',
  }
},
方法:
 ログイン() {
   this.pwdCover = this.pwdCover.replace(/\S/g, '●');
    // ログイン要求、失敗した場合は pwdCover を復元
    this.pwdCover = this.password;
  },
  パスワードを設定する(val) {
   this.password = val;
  }
}

自信を持ってプロジェクトの同僚に送ったのですが、失敗に終わりました。現場の環境は次の通りでした。

  • オペレーティング システム: Windows 7、Windows 10
  • ブラウザ: Chrome v74.0.3729.108

同じバージョンの Google Chrome をインストールした後、問題は発生しませんでした。私のオペレーティング システムは Windows 10 です。何が問題だったのかわかりません。最終的に、方法 6 を選択しました。

ファイナル

寺院

<el-form-item>
 <el-input v-model="ユーザー名" type="text" name="text" placeholder="アカウント" autocomplete="オフ"><i slot="プレフィックス" class="el-input_icon el-icon-user"></i></el-input>
</el-form-item>
<el-form-item>
 <el-input v-model="pwdCover" type="text" name="pwd" id="pwd" placeholder="パスワード" autocomplete="off" @input="setPassword"><i slot="prefix" class="el-icon-lock"></i></el-input>
</el-form-item>

スクリプト

パスワードを設定する(val) {
  let reg = /[0-9a-zA-Z]/g; // 文字と数字のみが許可されますlet nDot = /[^●]/g; // ドット以外の文字let index = -1; // 新しく入力された文字の位置let lastChar = void 0; // 新しく入力された文字let realArr = this.password.split(''); // 実際のパスワード配列let coverArr = val.split(''); // テキストボックスにパスワード配列が表示されますlet coverLen = val.length; // テキストボックスの文字列の長さlet realLen = this.password.length; // 実際のパスワードの長さ// 新しく入力された文字と位置を検索coverArr.forEach((el, idx) => {
    if(nDot.test(el)) {
      インデックス = idx;
      最後の文字 = el;
    }
  });
  // 入力文字が仕様​​を満たしているか確認します。満たしていない場合は文字を削除します if(lastChar && !reg.test(lastChar)) {
    カバーArr.splice(インデックス、1);
    this.pwdCover = coverArr.join('');
    戻る;
  }
  (実長<カバー長)の場合{
    // 新しい文字を追加します realArr.splice(index, 0, lastChar);
  } そうでない場合 (coverLen <= realLen && index !== -1) {
    // 文字を置換します(直接置換する文字を 1 つ以上選択します)
    realArr.splice(インデックス、realLen - (coverLen - 1)、lastChar);
  } それ以外 {
    // 文字を削除します。val がすべて ● なので、一致させる方法がありません。文字が末尾から削除されるのか、途中から削除されるのかわかりません。数文字削除した後のパスワードの取り扱いは困難です。そのため、カーソルの位置と val の長さで判断できます。let pos = document.getElementById('pwd').selectionEnd; // カーソルの位置を取得します。realArr.splice(pos, realLen - coverLen);
  }
  // pwdCoverを
  this.pwdCover = val.replace(/\S/g, '●');
  this.password = realArr.join('');
},

ブラウザのパスワード記憶を禁止する機能をVueで実装するためのサンプルコードに関するこの記事はこれで終わりです。ブラウザのパスワード記憶を禁止するVueに関するより関連性の高いコンテンツについては、123WORDPRESS.COMの過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも123WORDPRESS.COMをよろしくお願いいたします。

以下もご興味があるかもしれません:
  • フロントエンドのvue+elementUIでパスワード記憶機能を実装する方法
  • Vue+要素+クッキーパスワード記憶機能の簡単な実装方法
  • Vue で Cookie と crypto-js を使用してパスワードを記憶し、暗号化する方法
  • Vue でパスワード機能を記憶するために sessionStorage を使用する
  • Vue プロジェクトは、クッキーにパスワードを記憶する機能を実装します (ソースコード付き)

<<:  MySQL の準同期レプリケーションについての簡単な説明

>>:  Linux 向けの強化されたスクリーンショットと共有ツール: ScreenCloud

推薦する

MySQL 8.0 をインストールした後、初めてログインするときにパスワードを変更する問題を解決する

MySQL 8.0.16で初回ログイン時のパスワードを変更する方法を紹介します。 MySQLデータベ...

サーバーストレステストの概念と方法 (TPS/同時実行性)

目次1 ストレステストの指標1.1 秒あたり1.2 クォータ1.3 平均処理時間(RT) 1.4 同...

Docker コンテナでネットワーク リクエストが遅くなる問題の解決策

Docker の使用中に、いくつかの問題が発見されました。npm install や bundle ...

Vue-CLI3.xはプロジェクトをサーバーに自動的にデプロイします

目次序文1. scp2をインストールする2. テスト/本番環境サーバーのSSHリモートログインアカウ...

mysql8.0.19 winx64バージョンのインストール問題を解決する

MySQL は、スウェーデンの会社 MySQL AB によって開発されたオープンソースの小規模なリレ...

jQueryのanimateアニメーションメソッドとアニメーションキューイング問題の解決方法の詳しい説明

目次animate() アニメーションメソッドアニメーションキューイングdelay() メソッドアニ...

MySQL トランザクション制御フローと ACID 特性

目次1. ACIDの特性トランザクション制御構文3. トランザクション同時実行例外1. ダーティリー...

CSS3は、欠けた角の長方形、折り畳まれた角の長方形、欠けた角の境界線を実装しています。

序文数日前、偶然、コーナーの四角形が欠落している機能に遭遇しました。最初に頭に浮かんだのは、必要な場...

nginxとIISで使用できるSSL証明書を作成する

目次SSL証明書の作成1. 秘密鍵を生成する2. 証明書要求ファイルを生成する3. CRT証明書ファ...

Win7 システムでの MySQL 5.7.11 の詳細なインストール チュートリアル

オペレーティング システム: Win7 64 ビット Ultimate Edition MySQL ...

MySQL データベースは XA 仕様をどのように実装しますか?

MySQL 一貫性ログMySQL データベースの電源が切れた場合、コミットされていないトランザクシ...

Centos7 での DNS サーバーの構築の概要

目次1. プロジェクト環境: 2: DNSサーバーの設定i: 前方解析を構成する: ii: 逆解像度...

フロントエンド JavaScript におけるリフレクションとプロキシ

目次1. 反射とは何ですか? 2. JavaScriptで反映する2.1 Reflect.get(タ...

タグのhref属性とonclickイベントの使用例

a タグは主にページ ジャンプを実装するために使用され、これは href 属性または onclick...

より人気がありクリエイティブなダーク背景のウェブデザインの例

暗い背景スタイルのページ デザインは非常に人気があり、シックでエレガント、そして非常にクリエイティブ...