1. 概要プロジェクト開発では、ルートが切り替わったりページが更新されたりするたびに、ユーザーがログインしているかどうかを判断する必要があります。フロントエンドでこの判断を行うこともできますし、バックエンドでもこの判断を行います。フロントエンドでもこの判断を行うのが最適です。 vue-router は、ルートが変更される前と後にトリガーされるグローバル プレナビゲーション フック beforeEach とグローバル ポストナビゲーション フック afterEach というナビゲーション フックを提供します。そのため、beforeEachナビゲーションフックでユーザーがログインしているかどうかを判断する必要があります。 ナビゲーション フックには 3 つのパラメーターがあります。 1. to: 入力するターゲットルーティングオブジェクト。 2. from: 現在のナビゲーションがこれから出発するルート オブジェクト。 3. next: このメソッドを呼び出した後にのみ、次のフック関数 (afterEach) に入ることができます。 next()//to が指すルートに直接移動します 2. ログインインターセプションを実装するためのルーティングナビゲーションガードここでは、空の vue プロジェクトを使用してデモンストレーションを行います。主に、ホームページとログインの 2 つのページがあります。 ホームページにアクセスするときはログインする必要があります。ログインしないと、ログイン ページにリダイレクトされます。 空のvueプロジェクトを作成し、src\componentsにLogin.vueを作成します。 <テンプレート> <div>これはログインページです</div> </テンプレート> <スクリプト> エクスポートデフォルト{ 名前: 「ログイン」 } </スクリプト> <スタイルスコープ> </スタイル> src\router\index.js を変更する 'vue' から Vue をインポートします 'vue-router' から Router をインポートします。 '@/components/HelloWorld' から HelloWorld をインポートします。 '@/components/Login' からログインをインポートします。 Vue.use(ルーター) const router = 新しいルーター({ mode: 'history', // URL 内の # を削除します ルート: [ { パス: '/login', 名前: 'ログイン', メタ: { タイトル: 「ログイン」 requiresAuth: false, // false はログインが不要であることを意味します}, コンポーネント: ログイン }, { パス: '/'、 名前: 'HelloWorld', メタ: { タイトル: 'ホームページ'、 requiresAuth: true, // true はログインが必要であることを意味します}, コンポーネント: HelloWorld }, ] }) // ルーティングインターセプション、ログインが必要かどうかを判断 router.beforeEach((to, from, next) => { if (to.meta.title) { //タイトルがあるかどうかを判断します document.title = to.meta.title; } // console.log("タイトル",document.タイトル) // 現在のルートナビゲーションにログインが必要かどうかを判断するには、requiresAuth を使用します。if (to.matched.some(record => record.meta.requiresAuth)) { トークン = localStorage.getItem('トークン') // console.log("トークン",トークン) // ログインアクセスが必要な場合は、ユーザーがログインしているかどうかを確認します if (!token) { 次({ パス: '/login', クエリ: { リダイレクト: to.fullPath } }) } それ以外 { 次() } } それ以外 { next() // 必ず next() を呼び出してください } }) デフォルトルーターをエクスポートします。 例: 各ルートごとにメタが追加されます。 requiresAuth フィールドは、ログインが必要かどうかを示すために使用されます。 router.beforeEach ではトークンのチェックが行われます。空の場合はログインページに移動します。 ホームページにアクセス
ジャンプします
効果は以下のとおりです。 F12を開いてコンソールに入り、トークンを手動で書き込みます localStorage.setItem('トークン', '12345678910') 効果は以下のとおりです。 ホームページに再度アクセスすると、通常通りアクセスできるようになります。 アプリケーションを開き、ローカルストレージの値を削除し、右クリックしてクリアをクリックします。 ページを更新すると、ログイン ページにリダイレクトされます。 どうですか、簡単じゃないですか? 以上が、vue ルーティングでログインインターセプションを実装する方法の詳細です。vue ログインインターセプションの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
>>: Linux カーネル デバイス ドライバー Linux カーネル 基本メモの概要
Oracle の大きなテキスト データ型 Clob 長いテキスト型 (MySQL ではサポートされて...
「スティッキーフッター」とはいわゆる「スティッキー フッター」は、新しいフロントエンドの概念や技術で...
MySQL と接続関連のタイムアウト序文:今日、同僚から、データ量が多いときに MySQL データベ...
この記事では、コンパイルとインストールから設定ファイルの説明まで、Nginx について詳しく紹介しま...
目次概要二分木からB+木へクラスター化インデックス非クラスター化インデックスジョイントインデックスと...
目次データブローカーとイベントObject.defineProperty メソッドのレビューデータブ...
効果プレビューアイデア現在のリストを最後の項目までスクロールし、すぐに最初の項目に戻ります。問題1....
前面に書かれた最近、ある読者から、ブラウザからサーバーにアクセスすると、画像の表示が遅く、ブラウザに...
私が初めて Web 開発を独学で学んだ頃は、いわゆる DIV/CSS レイアウトはなく、テーブル レ...
最近、社内の重要なサーバデータを定期的にストレージにバックアップし、ついでにメモしておきたい以前、W...
私はインターネット上で数え切れないほどの my.cnf 構成を読みましたが、言及されている構成のほと...
目次1. 自己列挙可能なプロパティ2. Object.values()はプロパティ値を返します3. ...
Vm 内のハイパーリンク URL は、Get 要求のパラメータとして中国語と連結する必要があります。...
私は、WinForm と HTML5 を組み合わせた小さなものを作りたいだけなのですが、突然、そこに...
由来: 数日前、テスターから写真を見るという要件が送られてきました。 この要件を見たとき、私は少し混...