Vueのログインとログアウトの詳細な説明

Vueのログインとログアウトの詳細な説明

まず、エフェクトの実装プロセスを見てみましょう。

まず、概要とビジネスプロセスおよび関連する技術的なポイントにログインします

  • 記録ページのレイアウト
  • 2つのVue.jsファイルを作成する
  • ログインページと登録ページを作ってみましょう
  • ログインページのレイアウト
  • ルートの設定
  • ログインフォームのデータバインディング
  • ログインフォームの検証ルール
  • ログインフォームのリセット
  • ログイン事前認証
  • ログインコンポーネント構成ポップアッププロンプト
  • ログイン成功後の動作
  • ログイン後にトークンをクライアントのセッションストレージに保存する
  • プログラムによるナビゲーションを通じてバックエンドのホームページにジャンプします。ルーティング アドレスはデフォルトのパス '/' です。
  • ホームページからログアウトすると、コンポーネント構成ポップアップウィンドウが表示され、removeItemを使用してトークンを削除するように求められます。

ログインビジネスプロセス

1. ログインページでユーザー名とパスワードを入力します

2. 検証のためにバックエンドインターフェースを呼び出す

3. 検証後、背景の応答状況に応じてプロジェクトのホームページにジャンプします

ログイン機能の実装

1.まず、ルーティングガードを使用してログインを確認し、ログインする必要があるかどうかを判断します。

{
    パス:'/login',
    名前:"ログイン",
    コンポーネント:ログイン、
    メタ:{
      ログイン:true
    }
} 
  // ログインが必要な場所で meta-true を定義して、ログインが必要かどうかを確認します。if(to.matched.some(item=>item.meta.login)){//ログインが必要です。console.log("ログインが必要です");
    if(isLogin){//1. すでにログインしている場合は、直接渡します if(data.error===400){//バックエンドはログインに失敗したことを伝えます next({name:'login'})
            localStorage.removeItem('トークン');
            戻る;
        }
        if(to.name==='ログイン'){
            次へ({name:'ホーム'})
        }それ以外{
            次()
        }
        戻る;
    }
    if(!isLogin && to.name==='login'){//2. ログインしていないが、ログインページに進む next()
    }
    if(!isLogin && to.name !=='login'){//3. ログインしていない、ログインページではない next({name:"login"})
    }
   }else{//ログインする必要はありません。直接次へ進みます()
   }

2. フォーム検証ルールには、Elementコンポーネントライブラリを使用します。

Elementを使用してテンプレートにスタイルレイアウトを記述します

 <div class="ログインセクション">
    <!-- :rules="ルール" -->
    <el-フォーム
      ラベル位置="上"
      ラベル幅="100px" クラス="demo-ruleForm"
      :rules="ルール"
      :model="ルールから"
      ステータスアイコン
      ref="ルール元"
    >
      <el-form-item label="ユーザー名" prop="名前">
        <!-- v-model を使用してユーザーが入力した名前を取得します -->
        <el-input type="text" v-model="rulesFrom.name"></el-input>
      </el-form-item>
      <el-form-item label="パスワード" prop="パスワード"></el-form-item>
        <!-- v-model を使用してユーザーが入力したパスワードを取得します -->
        <el-input type="password" v-model="rulesFrom.password"></el-input>
      </el-form-item>
      <el-form-item>
        <!-- 送信イベントを定義する -->
        <el-button type="primary" @click="submitFrom('ruleFrom')">送信</el-button>
        <el-button>リセット</el-button>
      </el-form-item>
    </el-form>
  </div>

フォームの検証ルールを定義する

詳細については、Elementの公式ウェブサイトをご覧ください。

データで定義

ルールFrom:{
        名前:''、
        パスワード:''
      },
      ルール:
        名前:[
          // 検証ルール {required:true,message:'ユーザー名を入力してください',trigger:'blur'},
          {min:1,max:5,message:'長さは 1 文字から 5 文字です',trigger:'blur'}
        ]、
        パスワード:[
          {required:true,message:'パスワードを入力してください',trigger:'blur'},
          {min:1,max:5,message:'長さは 1 文字から 5 文字です',trigger:'blur'}
        ]
      }

メソッドで送信イベントを定義する

 // 送信をクリックすると、フォーム内のすべての情報を取得するメソッドがトリガーされます。submitFrom(formName){
      this.$refs[formName].validate( (valid)=>{
        if(有効){
          // 検証に合格すると、ユーザー情報とパスワードがバックエンドに返されます login({
            名前:this.rulesFrom.name、
            パスワード:this.rulesFrom.password,
          }).then((データ)=>{
            コンソールにログ出力します。
            if(データコード===0){
              localStorage.setItem('トークン',data.data.token)
              ウィンドウの場所.href='/';
            }
            if(データコード===1){
              this.$message.error(データ.メッセージ)
            }
          })
        }それ以外{
          console.log('送信エラー!!');
          偽を返す
        }
      })
    }

このとき、ログアウトを書いてルータ内で変換するbeforeEach

const トークン = localStorage.getItem('トークン');
// ! !トークンはブール型に変換されます const isLogin=!!token;
// ルートに入るときは、トークンをバックエンドに返して、それが正当かどうかを確認する必要があります。const data = await userInfo();
    Store.commit('chageUserInfo',data.data)

要約する

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

以下もご興味があるかもしれません:
  • Vue でのログインとログアウトの実装例
  • Vue実戦記録のログインページの実装
  • vue-cli3と要素に基づいたログインページの実装
  • vue+koa2 を使用してセッションとトークンのログインステータス検証を実装する例

<<:  MySQL のユニークインデックスと通常のインデックスのどちらを選択すればよいでしょうか?

>>:  deepin apt コマンドを使用して最新バージョンの docker をインストールする方法

推薦する

Linux Zabbixカスタム監視およびアラーム実装プロセスの分析

ターゲットzabbix フロントエンド監視の iostat コマンドでデータの 1 つを表示します。...

Windows 上の MySQL バージョン 5.7 でエンコードを UTF-8 に変更する方法

序文MySQLの勉強を始めたばかりで、公式サイトから最新バージョン5.7.14をダウンロードしました...

Vueはシンプルな虫眼鏡効果を実装します

この記事では、参考までに、簡単な虫眼鏡効果を実現するためのVueの具体的なコードを紹介します。具体的...

Windows Server 2012 リモート デスクトップ ライセンス サーバーがライセンスを提供できず、リモート セッションが切断される

本日、会社の内部サーバーにログインしたところ、リモートアクセスができませんでした。エラー メッセージ...

ReactプロジェクトでのTypeScriptの実装

目次1. はじめに2. 使用方法ステートレスコンポーネントステートフルコンポーネント制御コンポーネン...

React 非親子コンポーネントパラメータ渡しのサンプルコード

React は、ユーザー インターフェイスを構築するための JavaScript ライブラリです。 ...

均一なアニメーション効果を実現するJavaScript

この記事の例では、JavaScriptで等速アニメーションを実装するための具体的なコードを参考までに...

Dockerにelasticsearchとkibanaをインストールする方法

Elasticsearchは現在非常に人気があり、多くの企業が利用しているため、esを知らないと軽蔑...

ウェブデザイン:大量の素材の正確な配置と使用

3回の暗記により、大量の資材の正確な場所と目的を記憶でき、その使いやすさが向上します。 これは単なる...

MySQL データ型の詳細

目次1. 数値型1.1 数値型の分類1.1.1 浮動小数点数1.1.2 ビットタイプ1.1.3 時間...

MySQL 8.0.17 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.17のインストールと設定方法を参考までに紹介します。具体的な内容は...

データベース接続プール Druid の使用手順

総合的なパフォーマンス、信頼性、安定性、スケーラビリティ、使いやすさなどの要素に基づいて、最適なデー...

Web 上の要素を非表示にする方法とその利点と欠点

ソースコードの例: https://codepen.io/shadeed/pen/03caf6b36...

Bootstrap 3.0 学習ノート CSS関連補足

この記事の主な内容は次のとおりです。 1. ブラウザのサポート2. 画像3. レスポンシブツール4....

Linux の高並列性とパフォーマンス最適化の落とし穴の紹介

目次序文Linux アプリケーション実行中に開いているファイルが多すぎる問題の分析と解決Linux ...