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 のホスト間コンテナ通信オーバーレイ実装プロセスの詳細な説明

推薦する

CSS3+HTML5+JSでブロックの縮小・拡大アニメーション効果を実現

最近、あるプロジェクトに取り組んでいたとき、自分のプロジェクトでは CSS3 のアニメーション技術を...

MySQL の NULL 値に関する体験談と分析チュートリアルシリーズ

目次1. テストデータ2. ヌル値による不便3. スペース、空の値、null をどのように判断すれば...

クールな充電アニメーションを実現する純粋なCSS

CSS のみを使用してどのような充電アニメーション効果を作成できるかを見てみましょう。バッテリーを...

MySQL累積計算実装方法の詳しい説明

目次序文需要分析MySQL ユーザー変数累積計算にMysqlユーザー変数を使用する要約するこの記事で...

meta name="" content="の機能の詳細な説明

1. 文法: <meta name="名前" content="...

Mac に Windows サービスを備えた仮想マシンをインストールする方法

1. 仮想マシンをダウンロードする公式ダウンロードウェブサイト: https://www.vmwar...

Docker-Composeコマンドの使い方の詳しい説明

Docker コンテナはさまざまな方法で管理およびデプロイできます。 Docker コマンドを直接使...

リモート Linux システムでポートが開いているかどうかを確認する 3 つの方法

これは、Linux 管理者だけでなく、私たち全員にとって非常に重要なトピックです。つまり、IT イン...

SQLで同じフィールドの異なる値のデータ統計を実行する

適用シナリオ: シールのさまざまな状態に応じて、さまざまな状態のシールの数をカウントする必要がありま...

Linux で Bash 環境変数を設定する方法

Shell は C 言語で書かれたプログラムであり、ユーザーが Linux を使用するための橋渡しと...

SSHを使用してDockerサーバーに接続する方法

初めて docker に触れたときは本当に戸惑いました。初心者向けのチュートリアルを長い間読みました...

mysqladmin を使用して MySQL インスタンスの現在の TPS と QPS を取得する方法

mysqladmin は管理と操作を行う公式の mysql クライアント プログラムです。MySQL...

Docker のインストールと構成コマンドのコード例

Dockerのインストール依存パッケージをインストールする sudo yum install -y ...

SSHのssh-keygenコマンドの基本的な使い方の詳細な説明

SSH 公開鍵認証は、SSH 認証方式の 1 つです。 SSH パスワードフリーのログインは公開鍵認...

VMwareがモジュールディスクを早期に開けない場合の解決策の詳細な説明

VMWare (Virtual Machine ware) は、「仮想 PC」ソフトウェア会社です。...