ホームページ ウェブフロントエンド jsチュートリアル vue iview 動的ルーティングと権限検証手順の詳細な説明

vue iview 動的ルーティングと権限検証手順の詳細な説明

Apr 28, 2018 am 11:50 AM
ie 確認する

今回は、vue iviewの動的ルーティングと権限の検証の手順について詳しく説明します。vue iviewの動的ルーティングと権限の検証を使用する際の注意事項は何ですか?実際のケースを見てみましょう。

github には Vue で動的にルートを追加する例がたくさんあります。いくつかのプロジェクトを参照した後、このプロジェクトは iview フレームワークに基づいて動的ルートの動的追加とメニューの更新を完了しました。困っている他の友達を助けるために、私は実装ロジックを共有します。一緒にコミュニケーションをとって学びましょう。

Githubアドレス

iview-dynamicRouter

目標を達成する

クライアントはサーバーからルーティングとパーミッションのデータを取得した後、プロジェクトのルーティングとメニューのリストを更新し、パーミッション制御を実行します。

プロジェクトの基礎

  • 基本フレームワーク: iview コンポーネント ライブラリ 公式テンプレート プロジェクト iview-admin のテンプレート ブランチ プロジェクト、このプロジェクトは iview-admin の基本フレームワーク コードです。プロジェクトアドレス: iview-admin

実装ロジック

動的ルーティング制御の読み込み

一般に、動的ルーティング制御は2つのタイプに分けられます。1つは、すべてのルーティングデータをローカルファイルに保存し、その後取得するものです。サーバーからユーザーの権限情報を取得し、ルートジャンプ時の権限判定フックを追加します。ユーザーが遷移したページが権限リストにない場合、ジャンプを禁止します。もう 1 つは、

エラー処理 ページや権限制御ページなどの基本ルートのみをローカルに保存し、サーバーはユーザーの権限とクライアントに基づいて対応するルーティング データを発行します。これらのデータを使用して、ルートを動的に生成および追加するために、この記事では 2 番目の方法を採用します。

iview-admin プロジェクトはルートを 3 つのタイプに分けます:

  • メインコンポーネントのサブページとして表示されないページルート (ログイン、404、403、およびサブとしてのその他のエラーページルート)。 - メインコンポーネントのページ。otherRouter は表示されますが、ホームページのルーティングなど、メインコンポーネントのサブページとして表示され、左側のメニューに表示されます。

  • ルーティング データを取得した後、主に 2 つのことを行います。操作の一部、最初の部分はデータを走査し、コンポーネントの非同期読み込みメソッドを使用して各ルーティング ノードに対応するコンポーネントを読み込み、ページ タグを使用します。
  • フレームワークと

    ブレッドクラム ナビゲーション

    の下で appRouter を走査してルーティング情報を取得するため、グローバル アクセスのためにルーティング データも vuex に保存する必要があります。
  • 404 ページが静的ルートの場合、初めてページに入ったとき、動的ルートはまだロードされておらず、

    ルーティング アドレス

    が見つからない場合は、デフォルトでは 404 エラー ページにジャンプし、エクスペリエンスが非常に悪いため、404 ルートは最初にルーティング ルールに書き込まれず、動的ルーティングと一緒にロードされます。
メインコードは次のように実装されます:

router.addRoutes(routes) 完成路由列表的动态添加;第二部分是因为 iview-admin データリクエストとルーティングノード生成

動的読み込みコンポーネント

最終的にmain.jsで呼び出される

//main.js
 mounted () {
 // 调用方法,动态生成路由
 util.initRouter(this);
 }
ログイン後にコピー

権限制御

動的ルーティングの実装と同様操作許可制御には大きく分けて 2 種類あり、1 つはページ表示時に許可を制御しない、操作開始時に許可判定を行う方法です。 2 番目の方法は、ページの読み込み時に権限を判断し、権限のない操作は表示されません。私は、ユーザーに誤解を与えない 2 番目の方法を好みます。個人的には、ユーザーに表示されるものが操作可能であるべきだと考えています。そうしないと、ボタンをクリックした後に許可がないとメッセージが表示されるのは非常に不快です。 このプロジェクトのアイデアのソースについては、参照ブログ投稿を参照してください。元のブロガーの具体的なアイデアは次のとおりです。ルーティング構造のメタ フィールドに、

ユーザー

操作許可リストを追加し、グローバル コマンドを登録します。ノードが初めてレンダリングされるとき、ページの権限が存在するかどうかを確認し、権限が存在し、渡されたパラメータが権限リストにない場合、ノードは直接削除されます。

主なコードの実装は次のとおりです: ルーティング データに許可フィールドを追加して、許可リストを保存します

//menu.json,模拟异步请求数据
[
 {
 "path": "/groupOne",
 "icon": "ios-folder",
 "name": "system_index",
 "title": "groupOne",
 "component": "Main",
 "children": [
  {
  "path": "pageOne",
  "icon": "ios-paper-outline",
  "name": "pageOne",
  "title": "pageOne",
  "component": "group/page1/page1",
  "permission":["del"]
  },
  ...
 ]
 }
]
ログイン後にコピー

在遍历生成路由节点时,将 permission 字段数据存入路由节点 meta 属性中

//util.js
//生成路由节点
util.initRouterNode = function (routers, data) {
 for (var item of data) {
  ....
  //添加权限判断
  meta.permission = menu.permission ? menu.permission : null;
  ...
 }
};
ログイン後にコピー

定义全局命令组件,读取路由 permission 属性值获得权限列表,如果该不权限在权限列表中,则删除节点

//hasPermission.js 
const hasPermission = {
 install (Vue, options) {
  Vue.directive('hasPermission', {
   bind (el, binding, vnode) {
    let permissionList = vnode.context.$route.meta.permission;
    if (permissionList && permissionList.length && !permissionList.includes(binding.value)) {
     el.parentNode.removeChild(el);
    }
   }
  });
 }
};
export default hasPermission;
ログイン後にコピー

权限组件使用示例

<template>
 <p>
  <h1>page1</h1>
  <Button v-hasPermission="&#39;add&#39;">添加</Button>
  <Button v-hasPermission="&#39;edit&#39;">修改</Button>
  <Button v-hasPermission="&#39;del&#39;">删除</Button>
 </p>
</template>
ログイン後にコピー

全局注册组件

// main.js
import hasPermission from '@/libs/hasPermission.js';
Vue.use(hasPermission);
ログイン後にコピー

这种权限控制方法的优点就是,不管是管理配置还是页面处理逻辑都相对简单,没有很多重复的代码判断和节点处理,在参考对比了网上几种实现方式后,个人比较推荐这一种方法。

页面标签和面包屑导航

在我看来,页面标签和面包屑都属于系统中锦上添花的页面相关控件,提高页面管理的便捷性,在iview官方admin项目中已经实现了这两个组件。所以这个项目中,只是将其进行移植,实现了组件功能,没有深入了解,感兴趣的可以仔细研究。

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

分享页面后跳转回首页

Vue自定义动态组件使用详解

以上がvue iview 動的ルーティングと権限検証手順の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PDFの署名を検証する方法 PDFの署名を検証する方法 Feb 18, 2024 pm 05:33 PM

私たちは通常、政府やその他の機関から PDF ファイルを受け取りますが、中にはデジタル署名が付いているものもあります。署名を検証すると、SignatureValid メッセージと緑色のチェック マークが表示されます。署名が検証されない場合、有効性は不明です。署名の検証は重要です。PDF で署名を検証する方法を見てみましょう。 PDF 形式の署名を検証する方法 PDF 形式で署名を検証すると、署名の信頼性が高まり、文書が受け入れられる可能性が高くなります。次の方法で PDF ドキュメントの署名を検証できます。 Adobe Reader で PDF を開きます。 署名を右クリックし、「署名プロパティの表示」を選択します。 「署名者証明書の表示」ボタンをクリックします。 「信頼」タブから信頼できる証明書リストに署名を追加します。 「署名の検証」をクリックして検証を完了します。

WeChatの友人による認証を使用してブロックを解除する詳細な方法 WeChatの友人による認証を使用してブロックを解除する詳細な方法 Mar 25, 2024 pm 01:26 PM

1. WeChatを開いた後、検索アイコンをクリックし、WeChatチームと入力し、下のサービスをクリックして入力します。 2. 入力後、左下隅にあるセルフサービス ツール オプションをクリックします。 3. をクリックした後、上のオプションで、補助検証のブロック解除/再審査請求のオプションをクリックします。

golangで入力が全角文字かどうかを確認する方法 golangで入力が全角文字かどうかを確認する方法 Jun 25, 2023 pm 02:03 PM

golang では、入力が全角文字であるかどうかを検証するために Unicode エンコードとルーンの種類が必要です。 Unicode エンコードは、全角文字と半角文字を含む文字セット内の各文字に一意の数値コード ポイントを割り当てる文字エンコード標準です。ルーン タイプは、golang で Unicode 文字を表すために使用されるタイプです。最初のステップは、入力をルーン タイプのスライスに変換することです。これは、golang の []rune タイプを使用して変換できます。

正規表現を使用して IFSC コードを検証するにはどうすればよいですか? 正規表現を使用して IFSC コードを検証するにはどうすればよいですか? Aug 26, 2023 pm 10:17 PM

Indian Financial System Code の略称です。電子資金移動システムに参加しているインドの銀行支店は、特別な 11 文字のコードで識別されます。インド準備銀行は、インターネット取引でこのコードを使用して銀行間で資金を送金します。 IFSC コードは 2 つの部分に分かれています。銀行は最初の 4 文字で識別され、支店は最後の 6 文字で識別されます。 NEFT (National Electronic Funds Transfer)、RTGS (Real Time Gross Settlement)、および IMPS (Immediate Payment Service) は、IFSC コードを必要とする電子トランザクションの一部です。方法 正規表現を使用して IFSC コードを検証する一般的な方法は次のとおりです。 長さが正しいかどうかを確認します。最初の 4 文字を確認してください。 5 番目の文字を確認してください。Che

golangで入力が大文字かどうかを確認する方法 golangで入力が大文字かどうかを確認する方法 Jun 24, 2023 am 09:06 AM

Golang は高性能で最新のプログラミング言語であり、日常の開発では文字列処理が頻繁に行われます。その中で、入力が大文字であるかどうかを検証することは共通の要件です。この記事ではGolangで入力が大文字かどうかを確認する方法を紹介します。方法 1: unicode パッケージを使用する Golang の unicode パッケージは、文字のエンコード タイプを決定する一連の関数を提供します。大文字の場合、対応するエンコード範囲は 65 ~ 90 (10 進数) であるため、unicode を使用できます。

PHP 8 の新機能: 検証と署名の追加 PHP 8 の新機能: 検証と署名の追加 Mar 27, 2024 am 08:21 AM

PHP8 は PHP の最新バージョンであり、プログラマーにさらなる利便性と機能をもたらします。このバージョンはセキュリティとパフォーマンスに特に重点を置いており、注目すべき新機能の 1 つは検証および署名機能の追加です。この記事では、これらの新機能とその使用法について詳しく説明します。検証と署名は、コンピューター サイエンスにおける非常に重要なセキュリティ概念です。これらは、送信されるデータが完全で本物であることを確認するためによく使用されます。オンライン取引や機密情報を扱う場合、検証と署名がさらに重要になります。誰かがデータを改ざんできると、潜在的にデータが改ざんされる可能性があるためです。

win11でie11ブラウザが使えない場合はどうすればいいですか? (win11ではIEブラウザは使用できません) win11でie11ブラウザが使えない場合はどうすればいいですか? (win11ではIEブラウザは使用できません) Feb 10, 2024 am 10:30 AM

ますます多くのユーザーが win11 システムにアップグレードし始めています。各ユーザーの使用習慣が異なるため、多くのユーザーは依然として ie11 ブラウザーを使用しています。では、win11 システムで ie ブラウザーを使用できない場合はどうすればよいでしょうか? Windows11はIE11をまだサポートしていますか?解決策を見てみましょう。 win11でie11ブラウザが使えない問題の解決策 1. まず、スタートメニューを右クリックし、「コマンドプロンプト(管理者)」を選択して開きます。 2. 開いたら、「Netshwinsockreset」と直接入力し、Enter キーを押して確定します。 3. 確認後、「netshadvfirewallreset&rdqu」と入力します。

PHP での Google reCAPTCHA を使用した認証 PHP での Google reCAPTCHA を使用した認証 Jun 19, 2023 pm 05:38 PM

現代のオンライン世界では、Web サイトのセキュリティとユーザーのプライバシーの保護がますます重要なテーマになっています。その中でも、人間と機械の検証という技術的手法は、悪意のある攻撃を防ぐために不可欠な手段の 1 つとなっています。 GooglereCAPTCHAは人間と機械の検証に広く使われているツールであり、その概念は人々の心に深く根付いており、私たちが日常的に使用する多くのWebサイトでもその存在を見ることができます。この記事では、PHP での検証に GooglereCAPTCHA を使用する方法を説明します。

See all articles