序文以前、Vue の研究では、ユーザーログインモジュールの機能は、ルーティングナビゲーションガード制御を通じて実現されていました。今、プロジェクトを再度行う場合、同じ機能を実現するために、ルーティングナビゲーションガードを Vue で構成する必要があります。ここでは、実装プロセスを記録し、まとめます (この記事は Vue2.x に基づいて実装されています) ヒント:以下はこの記事の主な内容です。以下のケースを参考にしてください。 1. ルーティングナビゲーションガードを設定する1. グローバルナビゲーションガードプロジェクトにバックエンドしかない場合は、Vue でグローバル ナビゲーション ガードを設定できます。グローバル ルーティング ナビゲーション ガードを設定すると、プロジェクトが開始されている限り、ユーザーはログインしていない場合はログイン ページにのみジャンプでき、他のインターフェイスにジャンプすることはできません。 router.beforeEach((to, from, next) => { // ログインインターフェースへのアクセスの場合は直接許可します if (to.path === '/login') return next() //ユーザーページトークン情報を取得する let token = window.sessionStorage.getItem('token') //トークンデータがnullの場合は、指定されたパスにジャンプします。if (!token) return next("/login") 次() }) パラメータの説明:
2. ローカルナビゲーションガードプロジェクト開発では、フロントエンドとバックエンドの両方を同時に開発する必要がある状況もあります。このとき、フロントエンドのインターフェースはユーザーに表示する必要があり、ユーザーはログインしていなくてもアクセスできるため、ルーティングナビゲーションガードをグローバルに設定することはできません。そのため、ルーティングナビゲーションガードはバックエンドのパスのみをインターセプトします。 ルート ナビゲーション ガードは引き続き index.js フォルダーで構成されますが、今回は単一のコンポーネントに対して構成されます。 たとえば、私のプロジェクトでは、Welcome コンポーネントはバックグラウンド コンポーネントです。このコンポーネントのルーティング ナビゲーション ガードを構成するには、まず、単一コンポーネント ナビゲーション ガードの構成で、 作者は以前、ログイン コンポーネントでルーティング ナビゲーション ガードを設定しましたが、機能しませんでした。今後このようなミスをしないように、ここに記録しておきます。コンポーネントに次のコードを追加するだけです。 // ルートナビゲーションガードを定義する beforeEnter(to, from, next) { //ユーザーページトークン情報を取得する let token = window.sessionStorage.getItem('token') //トークンデータがnullの場合は、指定されたパスにジャンプします。if (!token) return next("/login") 次() } ローカル ナビゲーション ガードのパラメータは、グローバル構成のパラメータと一致しています。 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 ファイルで実行されるため、設定されたリクエスト ルート ディレクトリを表す 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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQL 8.0.19 インストールチュートリアル
>>: Docker のホスト間コンテナ通信オーバーレイ実装プロセスの詳細な説明
VMware Workstation は、開発、テスト、デモンストレーション、展開のために仮想マシン...
目次起源現状リクエストをキャンセル cancelTokenリクエスト方法の変更重複したリクエストを避...
目次1 違い1.1 スペース占有1.2 表現範囲1.3 タイムゾーン2 テスト3つの選択肢MySQL...
目次リレーショナルデータベースとは何ですか?非リレーショナルデータベースとは何ですか? MySQL ...
InnoDB インデックスの物理構造すべての InnoDB インデックスは Btree インデックス...
目次序文1. MySQL メインストレージエンジン: 2. さまざまなストレージエンジンがテーブルを...
降順インデックスとは何ですか?インデックスについてはよくご存知かもしれませんが、降順インデックスにつ...
序文かつて、難しい問題に遭遇しました。タワークレーンからスイングハウスを落下させる必要がありましたが...
まずアイデアはこの効果を実現するには、 <input type="checkbox&...
概要: MySQL のパフォーマンス最適化について話すとき、誰もがクエリ パフォーマンスを向上させる...
この記事では、WeChatアプレットのカスタムタブバーコンポーネントの具体的なコードを参考までに紹介...
序文日常のコード開発では、配列のソートに関連する操作が多数あります。JavaScript では、so...
1. 固定幅+適応型期待される効果: 左側は固定幅、右側は適応幅 共通コード: html: <...
今日は、Jenkins + powershell スクリプトを使用して、.NET CORE スクリプ...
平日はニュースに注目して、テンセントをよく閲覧しています。しかし、コメントへの返信はほとんど見られま...