Vue2/vue3 ルーティング権限管理方法の例

Vue2/vue3 ルーティング権限管理方法の例

1. Vueルーティングの権限制御には一般的に2つの方法があります

a. ルーティングメタ情報(メタ)
b. メニューとルートを動的にロードする(addRoutes)

2 ルーティング権限を制御するためのルーティングメタ情報(メタ)

2.1 vue2での実装

ウェブサイトに管理者や一般ユーザーなどの異なる役割がある場合、異なるページにアクセスするには異なる役割が必要になります。

この時点で、すべてのページをルーティング テーブルに配置し、アクセスするときにロールの権限を判断するだけで済みます。権限がある場合はアクセスを許可します。権限がない場合はアクセスを拒否し、404 ページに移動します。

vue-router は、ルートを構築するときにメタ構成インターフェースを提供します。メタ情報にルートに対応する権限を追加し、ルートガードで関連する権限をチェックしてルートジャンプを制御できます。

各ルートのメタ属性のロールに、ルートにアクセスできるロールを追加できます。各ユーザーがログインすると、そのユーザーのロールが返されます。次に、ページにアクセスすると、ルートのメタ属性がユーザーのロールと比較されます。ユーザーのロールがルートのロール内にある場合は、アクセスが許可されます。そうでない場合は、アクセスが拒否されます。

Vue2 では次のように実装されています。

'vue-router' から VueRouter をインポートします。
Vue.use(VueRouter)
...
ルート: [
  {
    パス: '/login',
    名前: 'ログイン',
    メタ: {
      役割: ['管理者', 'ユーザー']
    },
    コンポーネント: () => import('../components/Login.vue')
  },
  {
    パス: 'ホーム',
    名前: 'ホーム',
    メタ: {
      役割: ['管理者']
    },
    コンポーネント: () => import('../views/Home.vue')
  },
]

const ルーター = 新しい VueRouter({
  ルート
})

デフォルトルーターをエクスポートする

app.vueファイルに導入し、グローバルルーティングガードを登録します。

//管理者とユーザーの2つの役割があると仮定します 
//バックグラウンドから取得したユーザーロール const role = 'user'
//ページに入ると、ナビゲーションガード router.beforeEach イベントがトリガーされます router.beforeEach((to,from,next)=>{
  to.meta.roles.includes(role) の場合 {
   next() //リリース}esle{
   next({path:"/404"}) //404ページにジャンプ}
})

これからは基本的なルーティング許可制御が完了します

話はそれますが、ルート ガードは、ルートが一致しない場合に 404 ページを転送するというビジネス上の要求も解決できます。これは次のように実現できます。

'./router' からルーターをインポートします
router.beforeEach((to, from, next) => {
   // ...
    一致する長さが 0 の場合
        次へ('/404')
    } それ以外 {
        次()
    }
    //console.log(to、from、next、'ルートガード')
})

2.2 vue3での実装

実際、考え方は似ていますが、Vue3 でのルーティングの使用方法は Vue2 とは少し異なることに注意してください。Vue3 インスタンスを作成するには、よりシンプルな 404 を使用します。Vue3 のルーティング許可制御については、Vue2 と次のコードに従って、次のようにコードを実装できます。

ルートを作成します。

'vue-router' から createRouter、createWebHashHistory をインポートします。
...
ルート: [
  {
    パス: '/login',
    名前: 'ログイン',
    メタ: {
      役割: ['管理者', 'ユーザー']
    },
    コンポーネント: () => import('../components/Login.vue')
  },
  {
    パス: 'ホーム',
    名前: 'ホーム',
    メタ: {
      役割: ['管理者']
    },
    コンポーネント: () => import('../views/Home.vue')
  },
]
const ルーター = createRouter({
    履歴: createWebHashHistory(),
    ルート: ルーター
})
デフォルトルーターをエクスポートします。

ルーティング ガード (App.vue にグローバルに登録):

輸入 {
    ルーターを使用する
} 'vue-router' から;
エクスポートデフォルト{
    名前: 'アプリ'、
    設定() {
        定数ルーター = useRouter();
        router.beforeEach((to, from, next) => {
            // ...
            一致する長さが 0 の場合
                次へ('/404')
            } それ以外 {
                次()
            }
        })
    }
}

4. メニューとルートを動的に読み込む(addRoutes)

ユーザ権限やユーザ属性に応じてメニューやルーティングテーブルを動的に追加し、ユーザ機能をカスタマイズします。vue-router はルートを動的に登録できる addRoutes() メソッドを提供します。ルートを動的に追加するということは、ルーティングテーブルにルートをプッシュするということに注意する必要があります。ルートは順番にマッチングされるため、404 ページなどのルートは動的に追加したルートの最後尾に配置する必要があります。

5. まとめ

vue2 であっても vue3 であっても、実装のアイデアは実際には似ていますが、インターフェイスの使用方法の詳細は若干異なります。私たちにとって、学習の焦点は特定のフレームワークに置くのではなく、自分自身の思考を訓練することに置く必要があります。

vue2/vue3 ルーティング権限管理に関するこの記事はこれで終わりです。vue ルーティング権限管理に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • vue3 キャッシュページキープアライブと統合ルーティング処理の詳細な説明
  • Vue3.0とBootstrapを組み合わせてマルチページアプリケーションを作成する
  • Vue3.0はドロップダウンメニューのカプセル化を実装します
  • Vue3+TypeScriptは再帰メニューコンポーネントの完全な例を実装します
  • Vue2.x と Vue3.x のルーティングフックの違いの詳細な説明
  • Vue3ルーティングVueRouter4を使用する簡単な例
  • Vue3 ページ、メニュー、ルートの使用

<<:  VMware 仮想マシンのインストール Linux システムのグラフィック チュートリアル

>>:  MySQL 5.7 でルートパスワードを変更する方法に関するチュートリアル

推薦する

時間を節約できる Linux コマンド エイリアス 15 個

序文Linux システムの管理と保守のプロセスでは、多数のコマンドが使用されます。非常に長いコマンド...

...

MySQL でのワイルドカードを使用したファジークエリの実装に関する簡単な説明

MySQL データベースでは、あいまいクエリが必要な場合にワイルドカードを使用します。まず、演算子と...

Docker で TLS と CA 認証を有効にする方法

目次1. 証明書を生成する2. リモートを有効にする3. リモート接続3.1 Jenkins接続3....

MySQL 結合テーブルクエリの基本操作 左結合のよくある落とし穴

概要中小規模のプロジェクトでは、特にレポートを作成するときに、結合テーブル クエリが非常に一般的な操...

MySQL 8.0の落とし穴の詳細な説明

本日、MySQL 8.0 をアップデートしました。最初の問題: Navicatがデータベースに接続で...

CSS3はアニメーション効果を実現するためにvar()とcalc()関数を使用する。

ナレッジポイントをプレビューします。アニメーションフレーム背景グラデーションvar() と calc...

MySQL の永続性とロールバックの原理を 1 つの記事で理解する

目次再実行ログディスクデータを直接更新するのではなく、最初にメモリデータを更新する必要があるのはなぜ...

HTML テーブル境界コントロールの詳細な説明

上の境界線のみを表示する <table frame=above>下の境界線のみを表示する...

Vue の基本入門: Vuex のインストールと使用

目次1. vuexとは何か2. インストールと導入3. vuexの使用4. プロセスの紹介5. 突然...

MySQLでビューを作成する方法

基本的な構文CREATE VIEW ステートメントを使用してビューを作成できます。構文の形式は次のと...

MySQL データベースを最適化する 8 つの方法の詳細な説明 (必読の定番)

導入:インターネット上にはデータベースの最適化に関する情報や方法が数多くありますが、その多くは品質に...

折りたたまれたテーブル行要素のバグ

例を見てみましょう。コードは次の通り非常にシンプルです。コードをコピーコードは次のとおりです。 &l...

Linux seqコマンドの使い方の詳しい説明

01. コマンドの概要seq コマンドは整数のシーケンスを生成するために使用されます。 02. コマ...

ミニプログラムは左スライドのドロワーメニューをネイティブに実装します

目次WXS レスポンス イベントプランAページ構造とスタイルWXS イベントコールバック関数WXS ...