Vue2.xは、ユーザーのログインと終了を実装するためにルーティングナビゲーションガードを設定します。

Vue2.xは、ユーザーのログインと終了を実装するためにルーティングナビゲーションガードを設定します。

序文

ここに画像の説明を挿入

以前、Vue の研究では、ユーザーログインモジュールの機能は、ルーティングナビゲーションガード制御を通じて実現されていました。今、プロジェクトを再度行う場合、同じ機能を実現するために、ルーティングナビゲーションガードを Vue で構成する必要があります。ここでは、実装プロセスを記録し、まとめます (この記事は Vue2.x に基づいて実装されています)

ヒント:以下はこの記事の主な内容です。以下のケースを参考にしてください。

1. ルーティングナビゲーションガードを設定する

1. グローバルナビゲーションガード

プロジェクトにバックエンドしかない場合は、Vue でグローバル ナビゲーション ガードを設定できます。グローバル ルーティング ナビゲーション ガードを設定すると、プロジェクトが開始されている限り、ユーザーはログインしていない場合はログイン ページにのみジャンプでき、他のインターフェイスにジャンプすることはできません
vue-router依存関係をインストールするときに自動的に生成されるrouter -> index.jsフォルダに次のコードを追加します。

router.beforeEach((to, from, next) => {
  // ログインインターフェースへのアクセスの場合は直接許可します if (to.path === '/login') return next()
  //ユーザーページトークン情報を取得する let token = window.sessionStorage.getItem('token')
  //トークンデータがnullの場合は、指定されたパスにジャンプします。if (!token) return next("/login")
  次()
})

ここに画像の説明を挿入

パラメータの説明:

  • to:どのインターフェースにジャンプするか
  • from:どのインターフェースからジャンプするか
  • next: next()関数を表し解放するために使用される

2. ローカルナビゲーションガード

プロジェクト開発では、フロントエンドとバックエンドの両方を同時に開発する必要がある状況もあります。このとき、フロントエンドのインターフェースはユーザーに表示する必要があり、ユーザーはログインしていなくてもアクセスできるため、ルーティングナビゲーションガードをグローバルに設定することはできません。そのため、ルーティングナビゲーションガードはバックエンドのパスのみをインターセプトします。

ルート ナビゲーション ガードは引き続き index.js フォルダーで構成されますが、今回は単一のコンポーネントに対して構成されます。

たとえば、私のプロジェクトでは、Welcome コンポーネントはバックグラウンド コンポーネントです。このコンポーネントのルーティング ナビゲーション ガードを構成するには、まず、単一コンポーネント ナビゲーション ガードの構成で、 beforeEachのグローバル構成をbeforeEnterに置き換えます。

ここに画像の説明を挿入

作者は以前、ログイン コンポーネントでルーティング ナビゲーション ガードを設定しましたが、機能しませんでした。今後このようなミスをしないように、ここに記録しておきます。コンポーネントに次のコードを追加するだけです。

// ルートナビゲーションガードを定義する beforeEnter(to, from, next) {
      //ユーザーページトークン情報を取得する let token = window.sessionStorage.getItem('token')
      //トークンデータがnullの場合は、指定されたパスにジャンプします。if (!token) return next("/login")
      次()
    }

ローカル ナビゲーション ガードのパラメータは、グローバル構成のパラメータと一致しています。 beforeEach beforeEnterに置き換えることを除いて、残りは同じです。ここでは詳細には触れません。

2. ユーザーログイン

ここではフロントエンド コードのみを示します。バックエンド コードの書き方は人それぞれ異なるため、ここでは示しません。

1. axios の設定

プロジェクト内のコールバック地獄の問題を回避するために、ここでaxiosプラグインをインポートし、main.jsファイルで事前にaxiosを設定しました。

/* axios パッケージをインポート */
'axios' から axios をインポートします

/* axios のリクエストルートディレクトリを設定します*/
axios.defaults.baseURL = 'http://localhost:8089/'
/* vue オブジェクトにグローバル オブジェクトを追加し、$http オブジェクトを使用して Ajax リクエストを送信します */
Vue.prototype.$http = axios

グローバル構成は main.js ファイルで実行されるため、設定されたリクエスト ルート ディレクトリを表す$httpコンポーネントに表示されます。ここではhttp://localhost:8089/です。

2. ユーザーログインコード

// ログインボタンがクリックされたら、バックグラウンドにデータを送信します login() {
  this.$refs.loginFormRef.validate(非同期有効 => {
    if(!valid) 戻り値
    const {data: result} = this.$http.post("/user/login",this.loginForm) を待機します。
    // 返されたパラメータのステータス コードが 200 でない場合は、ログインに失敗したことを意味します。if(result.status !== 200) return this.$message.error("User login failed")
    this.$message.success("ユーザーのログインに成功しました")
    //ログインが成功したら、トークン情報をセッションウィンドウに保存します。sessionStorage.setItem('token',result.data)
    //バックエンド管理システムのホームページにジャンプします this.$router.push("/welcome")
})

3. ユーザー終了

ユーザーがログアウトするときは、セッション内のトークンデータを削除して他のページにジャンプするだけで済みます。このとき、ルーティングナビゲーションガードが再び有効になるため、バックエンドに接続せずにフォアグラウンドで実装できます

1. 実装コード

ログアウト() {
  //1. セッション内のデータを削除する window.sessionStorage.clear()
  //2. ユーザーがログインページにアクセスする this.$router.push('/login')
}

要約する

上記は、Vue でルーティングナビゲーションガードを設定した後、ユーザーのログインとログアウトを実現する機能です。実装には、プロジェクトにログインしないとインターフェースにアクセスできない状況と、ユーザーがログインしていなくてもフロントデスクを閲覧できる状況の 2 つがあります。最初のケースでは、グローバル構成のみを実行する必要があります。 2 番目のケースでは、ログイン後にジャンプするコンポーネントで単一コンポーネント ルーティング ナビゲーションを構成するだけで済みます。

これで、Vue2.x ルーティング ナビゲーション ガードを設定してユーザーのログインとログアウトを実装する方法についての説明は終わりです。Vue ルーティング ガードのログインとログアウトに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • vue2.0 と DataTable プラグインを組み合わせてテーブルを動的に更新する方法の詳細な説明
  • vue3とvue2の利点の比較
  • Vue2.0/3.0 での provide と inject の使用例
  • vue2.x の徹底研究 - h 関数の説明
  • Vue2.x の応答性の簡単な説明と例
  • Vue3とVue2の利点のまとめ
  • Vue2は応答性を提供するためにprovide injectを実装しています
  • レスポンシブ原則と Vue2.0/3.0 の違いについての簡単な分析
  • vue.config.js からプロジェクト最適化までの vue2.x 構成
  • 手書きの Vue2.0 データハイジャックの例
  • Vue2.x - アンチシェイクとスロットリングの使用例
  • ソースコードから、Vue2がデータとメソッドを直接取得できる理由がわかる

<<:  MySQL 8.0.19 インストールチュートリアル

>>:  Docker のホスト間コンテナ通信オーバーレイ実装プロセスの詳細な説明

推薦する

Zookeeperスタンドアロン環境とクラスタ環境の構築

1. 単一マシン環境の構築# 1.1 ダウンロードZookeeper の対応するバージョンをダウンロ...

VMware 仮想マシンの 3 つの接続方法の例の分析

NATこのようにして、仮想マシンのネットワーク カードはホストの VMnet8 に接続されます。この...

uni-appのスタイルの詳細な説明

目次uni-app のスタイル要約するuni-app のスタイルsassプラグインは公式ウェブサイト...

表面的なウェブデザイン

<br />私はいつもYahooのウェブデザインが素晴らしいと信じてきました。しかし、こ...

無効と読み取り専用の機能と違い

1: readonly は、このコントロールをロックして、インターフェイス上で変更できないようにしま...

Windows 10 での MySQL 8.0 のダウンロードとインストール構成のグラフィック チュートリアル

この記事では、MySQL 8.0のダウンロードとインストールについてご紹介します。具体的な内容は以下...

Javascriptを使用して滑らかな曲線を生成する方法

目次序文ベジェ曲線の紹介二次ベジェ曲線3次ベジェ曲線ベジェ曲線計算機能フィッティングアルゴリズム付録...

WAMPにインストールするとMySQLが起動できるが、再起動後に起動できなくなる問題の解決方法

初めてwampをインストールした後、すべてのサービスが正常に使用できますが、再起動するとwampのア...

オンラインMySQL自動増分IDが使い果たされた場合の対処方法

目次テーブル定義の自動増分 ID InnoDBシステムはrow_idを自動的に増加させるシドInno...

MySQLキーワードDistinctの詳細な紹介

MySQLキーワードDistinctの使い方の紹介DDL SQLを準備します: テーブルテストを作成...

docker-compose を使用して MySQL を実行する方法

ディレクトリ構造 。 │ .env │ docker-compose.yml │ └─mysql ├...

MySQL に配列を保存するサンプルコードと方法

多くの場合、ストアド プロシージャを作成するときに配列がよく使用されますが、MySQL ではストアド...

DockerはMariaDBのサブライブラリとサブテーブル、および読み書き分離機能を実装します

目次1. はじめに2. 環境整備1. 基本環境3.Mysqlマスタースレーブ構成をインストールする1...

Vue での props の使い方の紹介

序文: Vue では、props を使用して、もともと分離されていたコンポーネントを直列に接続するこ...

MySQL ビューの原則分析

目次更新可能なビュービューのパフォーマンスビューの制限ビューは MySQL 5.0 以降で導入されま...