序文以前、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 のホスト間コンテナ通信オーバーレイ実装プロセスの詳細な説明
1. フォーム1. フォームの役割HTML フォームは、さまざまな種類のユーザー入力を受け取り、ユー...
他の人のために解決した問題を記録します。問題の説明MySQLのバージョンは5.7、オペレーティングシ...
このコマンドは、データ テーブル ff_vod を変更し、vod_url フィールドの内容の後に 9...
Oracle、DB2、SQL Server などの他の大規模データベースと比較すると、MySQL に...
目次序文1. 従来のVueコンポーネント1. メインコンポーネントコード: 2. 使用方法3. 成果...
目次隠れた問題適応高さのソリューションまず解決策を提示してください。Vueスタックが必要な学生はvu...
この記事は MySQL 公式サイトを参考にしてまとめたものであり、遭遇したいくつかの問題も記録されて...
Linuxインスタンスでシステムディスクを初期化した後、データディスクを再マウントするLinux イ...
最近、Web 開発のフロントエンドとバックエンドの技術を学んだので、その後の管理を容易にするためにプ...
公式ドキュメント: JSON 関数名前説明JSON_APPEND() JSONドキュメントにデータを...
1. 改行なしを実現するには<nobr>タグを使用するコードをコピーコードは次のとおりで...
この記事では、Vueを使用して特定の領域に透かしを描く方法を紹介します。具体的な内容は次のとおりです...
1. MySQLをシャットダウンする [root@localhost /]# サービスmysqldを...
まずデータ テーブルを作成しましょう。 使用テスト; テーブル「従業員」を作成します( emp_no...
この記事では、ボタン切り替え画像を実現するためのVueの具体的なコードを例として紹介します。具体的な...