Vue ボタンの権限制御の導入

Vue ボタンの権限制御の導入

序文:

日常的なプロジェクトでは、バックグラウンド インターフェイスによって返されるデータに基づいて、現在のユーザーの操作権限を判断する必要がある場合があります。削除権限がある場合は削除ボタンを表示する必要があります。この権限がないと、ボタンは表示されず、削除もされません。情報を検索することで、この機能はvuexを通じて実現されます。

1. 手順

1. ボタンの権限を定義する

バックグラウンド インターフェイスによって返された権限データを保存するには、 statebuttomPermissionを作成します。

setPermissionは、データを受け入れ、ページ権限管理をbuttomPermissionオブジェクトに渡すために使用されます。

vuex の使用:

Vue.use(Vuex)

Vueインスタンスを作成する const store = new Vuex.Store({
    州: {
        ボタン権限: {}
    },
    突然変異:
        setPermission(状態、権限) {
            state.buttomPermission = 許可
        }
    }
})
デフォルトストアをエクスポート


2. ストアを定義する

'./store/index.js' からストアをインポートします

新しいVue({
    店、
    el: '#app',
    レンダリング: h => h(App)
})


3. 権限指示を作成する

新しいdirectivesフォルダーを作成し、 permission.jsファイルを作成します。

ここで、 inserted関数は、バインドされた要素が親ノードに挿入されるときに、要素に権限があるかどうかを確認するために使用されます。

挿入されました(el、バインディング、vnode) {}


4. パーミッションディレクティブを使用する

ボタン ページでpermissionディレクティブを導入して定義し、 buttomにディレクティブを記述して、ディレクティブ内の対応する値をバインドします。

 <button v-permission="'add'">追加</button>
'./directives/permission' から権限をインポートします
ディレクティブ: {permission,},


5. 不正なデータを削除する

permission命令では、 bindingsを通じてボタンバインディングのvalueを取得し、 buttomPermissionオブジェクトでそれを見つけて、権限があるかどうかを判断します。権限がない場合は、ノードを削除します。

挿入(el, バインディング, vnode) {
        btnPermissionValue を bindings.value とします。
        ブール値をvnode.context.$store.state.buttomPermission[btnPermissionValue]に設定します。
        !boolean && el.parentNode.removeChild(el);
    }


6. 状態管理データの受け渡し

setPermissionメソッドを通じて状態管理データを権限管理に渡す

権限を {} にします
this.$store.commit("setPermission", 権限);


II. 概要

一般的に、 buttomPermission権限ステータス オブジェクトはvuexを通じて定義され、次にpermissionsディレクティブが作成されます。 permissionsディレクティブは各buttomに使用され、ボタンの特定の意味の値がバインドされます。次に、 permission.jsファイルで現在の値を取得し、現在のボタンにbuttomPermissionからの権限があるかどうかを取得します。権限がない場合は、現在のボタン ノードを直接削除します。

これで、vue ボタンの権限制御に関するこの記事は終了です。vue ボタンの権限制御に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue 動的ルーティングと Springsecurity ボタンレベルの権限制御の実装
  • VUEフロントエンドボタン権限制御の詳細な説明
  • Vueカスタム命令に基づいてボタンレベルの権限制御を実装するアイデアの詳細説明

<<:  Linux のソフトリンクとハードリンクの詳細な説明

>>:  CSS3で実装された炎のアニメーション

推薦する

CSS の flex と inline-flex の違いの詳細な説明

inline-flex は inline-block と同じです。内部要素用の display:fl...

Zabbix上のすべてのホストのIPとホスト名を取得する

ザビックスZabbix ([`zæbiks]) は、WEB インターフェースに基づいて分散システム監...

Docker のタイムゾーンの問題とデータ移行の問題

最新のソリューション: -v /usr/share/zoneinfo/Asia/Shanghai:/...

js でショッピングモールのシミュレーションを実現

HTML、CSS、JSフロントエンドを学習中の皆さん、今回はショッピングモールの事例の実装をシェアし...

システム CD をマウントして yum ウェアハウスを構築する VMware 15.5 バージョンのグラフィック チュートリアル

1. CentOS 7 仮想マシンを開きます。 2. 仮想マシンにログインし、リストにないユーザー名...

Vue.js ドロップダウン コンポーネント付きテキストボックス

ドロップダウン付きのテキストボックスを使用すると、ユーザーはドロップダウン リストから入力を選択した...

Linux サーバーに Python3 をインストールする 2 つの方法

最初の方法Alibaba Cloud および Baidu Cloud サーバーが利用可能です。 ! ...

優れたグラフィックデザイナーが習得すべき7つのスキル

1》ウェブデザインが得意であること2》Webページのデザイン方法を知る3》計画する4. SEOを理解...

docker で Apollo をデプロイする詳細なチュートリアル

1. はじめにここでは apollo について詳しく説明しません。公式サイト https://git...

Linux で MySQL スケジュールタスクを実装する方法

前提: ストアド プロシージャは、毎日午後 10 時から午前 5 時まで 10 分ごとに実行されます...

シンプルなカルーセル チャートを実装するための JavaScript の最も完全なコード分析 (ES5)

この記事では、シンプルなカルーセル効果を実現するためのJavaScriptの具体的なコードを参考まで...

Node8 における AsyncHooks 非同期ライフサイクル

Async Hooks は Node8 の新機能です。NodeJs の非同期リソースのライフサイクル...

CSS スタッキングと Z インデックスのサンプルコード

カスケードとカスケードレベルHTML 要素は 3 次元の概念です。水平方向と垂直方向に加えて、「Z ...

ソフトウェア テスト - MySQL (VI: データベース関数)

1.MySQL関数1. 数学関数PI() # 円周率 (pi) の値を返します。デフォルトの小数点...

pt-heartbeat を使用して MySQL レプリケーションの遅延を監視する方法の詳細な説明

pt-ハートビートデータベースがマスターとスレーブ間で複製される場合、複製ステータスとデータ遅延は非...