Maison interface Web js tutoriel Explication détaillée des étapes de routage dynamique et de vérification des autorisations de vue iview

Explication détaillée des étapes de routage dynamique et de vérification des autorisations de vue iview

Apr 28, 2018 am 11:50 AM
ie 验证

Cette fois, je vais vous apporter une explication détaillée des étapes du routage dynamique et de la vérification des autorisations de vue iview. Quelles sont les précautions lors de l'utilisation du routage dynamique et de la vérification des autorisations de vue iview. Voici des cas pratiques, voyons. jetez un oeil.

Il existe de nombreux exemples d'ajout dynamique d'itinéraires dans Vue sur github Après avoir fait référence à certains projets, ce projet a complété l'ajout dynamique d'itinéraires dynamiques et l'actualisation du menu basé sur le framework iview. Afin d'aider d'autres amis dans le besoin, je partage désormais la logique de mise en œuvre Bienvenue pour communiquer et apprendre ensemble.

Adresse Github

iview-dynamicRouter

Atteindre l'objectif

Une fois que le client a obtenu les données de routage et d'autorisation du serveur , Actualisez les listes de routage et de menu du projet et effectuez le contrôle des autorisations.

Base du projet

  • Cadre de base : projet de modèle officiel de la bibliothèque de composants iview Projet de branche de modèles d'iview-admin, ce projet est le framework de base d'iview-admin code. Adresse du projet : iview-admin

Logique de mise en œuvre

Chargement du contrôle de routage dynamique

Dit généralement qu'il existe deux types de contrôle de routage dynamique : l'un consiste à stocker toutes les données de routage dans des fichiers locaux, puis à obtenir les informations d'autorisation de l'utilisateur du serveur lorsque l'itinéraire saute, ajoutez un crochet de jugement d'autorisation si la page à laquelle l'utilisateur accède. n'est pas Dans la liste des autorisations, sauter est interdit. L'autre consiste à stocker localement uniquement les itinéraires de base, tels que la page Gestion des erreurs , aucune page de contrôle des autorisations, etc., tandis que les itinéraires d'autorisation sont obtenus à partir du serveur, et le serveur émet les données de routage correspondantes en fonction de l'utilisateur. autorisations et le client Pour utiliser ces données pour générer et ajouter dynamiquement des routes, cet article adopte la deuxième méthode.

Le projet iview-admin divise le routage en trois types :

  • Le routage des pages qui ne s'affiche pas comme une sous-page du composant principal, comme la connexion, 404, 403 et autres pages d'erreur Routage ;

  • est affiché comme une sous-page du composant principal mais n'est pas affiché dans le menu de gauche autreRouter, comme le routage de la page d'accueil

  • est utilisé comme composant principal. La sous-page est affichée et l'application de routageRouter est affichée dans le menu de gauche

Après avoir obtenu les données de routage, nous principalement ; effectuer deux parties de l'opération. La première partie consiste à parcourir les données et à les charger de manière asynchrone à l'aide de la méthode des composants, à charger les composants correspondant à chaque nœud de routage, puis à utiliser

pour terminer l'ajout dynamique de la liste de routes ; Cela est en partie dû au fait que les balises de page sous le framework router.addRoutes(routes) et le iview-admin navigation du fil d'Ariane doivent traverser l'appRouter pour obtenir des informations de routage, nous devons donc également stocker les données de routage dans vuex pour un accès global.

Il est important de noter que si la page 404 est une route statique, alors lorsque vous entrez dans la page pour la première fois, la route dynamique n'a pas encore été chargée, et si l'

adresse de routage est introuvable, il sautera par défaut. Lorsque vous arrivez à la page d'erreur 404, l'expérience est très mauvaise, donc la route 404 n'est pas écrite en premier dans les règles de routage et est chargée avec la route dynamique.

L'implémentation principale du code est la suivante :

Requête de données et génération de nœuds de routage

//util.js
//生成路由
util.initRouter = function (vm) {
 const constRoutes = [];
 const otherRoutes = [];
 // 404路由需要和动态路由一起注入
 const otherRouter = [{
  path: '/*',
  name: 'error-404',
  meta: {
   title: '404-页面不存在'
  },
  component: 'error-page/404'
 }];
 // 模拟异步请求
 util.ajax('menu.json').then(res => {
  var menuData = res.data;
  util.initRouterNode(constRoutes, menuData);
  util.initRouterNode(otherRoutes, otherRouter);
  // 添加主界面路由
  vm.$store.commit('updateAppRouter', constRoutes.filter(item => item.children.length > 0));
  // 添加全局路由
  vm.$store.commit('updateDefaultRouter', otherRoutes);
  // 刷新界面菜单
  vm.$store.commit('updateMenulist', constRoutes.filter(item => item.children.length > 0));
 });
};
//生成路由节点
util.initRouterNode = function (routers, data) {
 for (var item of data) {
  let menu = Object.assign({}, item);
  menu.component = lazyLoading(menu.component);
  if (item.children && item.children.length > 0) {
   menu.children = [];
   util.initRouterNode(menu.children, item.children);
  }
  //添加权限判断
  meta.permission = menu.permission ? menu.permission : null;
  //添加标题
  meta.title = menu.title ? menu.title : null;
  menu.meta = meta;
 }
};
Copier après la connexion

Composants de chargement dynamique

//lazyLoading.js
export default (url) =>()=>import(`@/views/${url}.vue`)
Store缓存实现
//app.js
 // 动态添加主界面路由,需要缓存
updateAppRouter (state, routes) {
 state.routers.push(...routes);
 router.addRoutes(routes);
},
// 动态添加全局路由,不需要缓存
updateDefaultRouter (state, routes) {
 router.addRoutes(routes);
},
// 接受前台数组,刷新菜单
updateMenulist (state, routes) {
 state.menuList = routes;
}
Copier après la connexion
Enfin, appelez

//main.js
 mounted () {
 // 调用方法,动态生成路由
 util.initRouter(this);
 }
Copier après la connexion

Contrôle des autorisations

Semblable à la méthode de mise en œuvre du routage dynamique, le contrôle des autorisations d'opération est généralement divisé en deux types. la page est affichée sans contrôle des autorisations. Toutes les opérations, telles que les boutons, sont affichées. Ensuite, lorsque l'opération est lancée, les autorisations sont jugées si l'utilisateur dispose des autorisations pour l'opération, sinon, il est rappelé à l'utilisateur. il n'a aucune autorisation. La seconde est Lorsque la page est chargée, les autorisations sont jugées et les opérations sans autorisations ne sont pas affichées. Je préfère la deuxième méthode, qui n'induira pas l'utilisateur en erreur. Je pense personnellement que ce que l'utilisateur voit doit être exploitable, sinon il sera très inconfortable de cliquer sur le bouton et d'être ensuite informé qu'il n'y a pas d'autorisation.

La source de l'idée de ce projet se trouve dans le billet de blog de référence. L'idée spécifique du blogueur original est la suivante : dans le champ méta de la structure de routage,

ajoutez l'utilisateur autorisation d'opération. list, puis enregistrez la commande globale, lorsque le nœud Lors du rendu pour la première fois, déterminez si la page dispose d'autorisations. Si elle existe et que les paramètres transmis ne sont pas dans la liste des autorisations, supprimez le nœud directement.

Le code principal est implémenté comme suit :

Ajouter le champ d'autorisation dans les données de routage pour stocker la liste d'autorisations

//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"]
  },
  ...
 ]
 }
]
Copier après la connexion

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

//util.js
//生成路由节点
util.initRouterNode = function (routers, data) {
 for (var item of data) {
  ....
  //添加权限判断
  meta.permission = menu.permission ? menu.permission : null;
  ...
 }
};
Copier après la connexion

定义全局命令组件,读取路由 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;
Copier après la connexion

权限组件使用示例

<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>
Copier après la connexion

全局注册组件

// main.js
import hasPermission from '@/libs/hasPermission.js';
Vue.use(hasPermission);
Copier après la connexion

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

页面标签和面包屑导航

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

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

推荐阅读:

分享页面后跳转回首页

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment vérifier la signature dans un PDF Comment vérifier la signature dans un PDF Feb 18, 2024 pm 05:33 PM

Nous recevons généralement des fichiers PDF du gouvernement ou d'autres agences, certains avec des signatures numériques. Après avoir vérifié la signature, nous voyons le message SignatureValid et une coche verte. Si la signature n'est pas vérifiée, la validité est inconnue. La vérification des signatures est importante, voyons comment le faire en PDF. Comment vérifier les signatures au format PDF La vérification des signatures au format PDF le rend plus fiable et le document est plus susceptible d'être accepté. Vous pouvez vérifier les signatures dans les documents PDF des manières suivantes. Ouvrez le PDF dans Adobe Reader Cliquez avec le bouton droit sur la signature et sélectionnez Afficher les propriétés de la signature Cliquez sur le bouton Afficher le certificat du signataire Ajoutez la signature à la liste des certificats de confiance à partir de l'onglet Confiance Cliquez sur Vérifier la signature pour terminer la vérification.

Méthode détaillée pour débloquer à l'aide de la vérification assistée par un ami WeChat Méthode détaillée pour débloquer à l'aide de la vérification assistée par un ami WeChat Mar 25, 2024 pm 01:26 PM

1. Après avoir ouvert WeChat, cliquez sur l'icône de recherche, entrez dans l'équipe WeChat et cliquez sur le service ci-dessous pour entrer. 2. Après avoir entré, cliquez sur l'option outil libre-service dans le coin inférieur gauche. 3. Après avoir cliqué, dans les options ci-dessus, cliquez sur l'option de déblocage/appel pour vérification auxiliaire.

Comment valider le code IFSC à l'aide d'expressions régulières ? Comment valider le code IFSC à l'aide d'expressions régulières ? Aug 26, 2023 pm 10:17 PM

Le Code du système financier indien est l'abréviation. Les succursales des banques indiennes participant au système de transfert électronique de fonds sont identifiées par un code spécial à 11 caractères. La Reserve Bank of India utilise ce code dans les transactions Internet pour transférer des fonds entre banques. Le code IFSC est divisé en deux parties. Les banques sont identifiées par les quatre premiers caractères, tandis que les succursales sont identifiées par les six derniers caractères. NEFT (National Electronic Funds Transfer), RTGS (Real Time Gross Settlement) et IMPS (Immediate Payment Service) sont quelques-unes des transactions électroniques qui nécessitent des codes IFSC. Méthode Voici quelques méthodes courantes pour valider les codes IFSC à l'aide d'expressions régulières : Vérifiez si la longueur est correcte. Vérifiez les quatre premiers caractères. Vérifiez le cinquième caractère. Che

Comment vérifier si l'entrée est constituée de caractères pleine chasse dans Golang Comment vérifier si l'entrée est constituée de caractères pleine chasse dans Golang Jun 25, 2023 pm 02:03 PM

Dans Golang, le codage Unicode et le type de rune sont requis pour vérifier si l'entrée est constituée de caractères pleine chasse. Le codage Unicode est une norme de codage de caractères qui attribue un point de code numérique unique à chaque caractère du jeu de caractères, qui comprend des caractères pleine chasse et des caractères demi-chasse. Le type rune est le type utilisé pour représenter les caractères Unicode en golang. La première étape consiste à convertir l’entrée en une tranche de type rune. Cela peut être converti en utilisant le type []rune de Golang, par exemple.

Comment vérifier si l'entrée est en majuscules dans Golang Comment vérifier si l'entrée est en majuscules dans Golang Jun 24, 2023 am 09:06 AM

Golang est un langage de programmation moderne et performant qui implique souvent le traitement de chaînes dans le développement quotidien. Parmi eux, valider si la saisie est en lettres majuscules est une exigence courante. Cet article explique comment vérifier si l'entrée est constituée de lettres majuscules dans Golang. Méthode 1 : utilisez le package Unicode Le package Unicode de Golang fournit une série de fonctions pour déterminer le type de codage des caractères. Pour les lettres majuscules, la plage de codage correspondante est 65-90 (décimal), nous pouvons donc utiliser Unicode

Nouvelles fonctionnalités de PHP 8 : ajout de la vérification et de la signature Nouvelles fonctionnalités de PHP 8 : ajout de la vérification et de la signature Mar 27, 2024 am 08:21 AM

PHP8 est la dernière version de PHP, apportant plus de commodité et de fonctionnalités aux programmeurs. Cette version met un accent particulier sur la sécurité et les performances, et l'une des nouvelles fonctionnalités remarquables est l'ajout de capacités de vérification et de signature. Dans cet article, nous examinerons de plus près ces nouvelles fonctionnalités et leurs utilisations. La vérification et la signature sont des concepts de sécurité très importants en informatique. Ils sont souvent utilisés pour garantir que les données transmises sont complètes et authentiques. La vérification et les signatures deviennent encore plus importantes lorsqu'il s'agit de transactions en ligne et d'informations sensibles, car si quelqu'un est capable de falsifier les données, cela pourrait potentiellement

Authentification à l'aide de Google reCAPTCHA en PHP Authentification à l'aide de Google reCAPTCHA en PHP Jun 19, 2023 pm 05:38 PM

Dans le monde en ligne moderne, la sécurité des sites Web et la protection de la vie privée des utilisateurs sont devenues des sujets de plus en plus importants. Parmi eux, la méthode technique de vérification homme-machine est devenue l’un des moyens indispensables pour prévenir les attaques malveillantes. GooglereCAPTCHA est un outil largement utilisé pour la vérification homme-machine. Son concept est profondément ancré dans le cœur des gens et sa présence est même visible sur de nombreux sites Web que nous utilisons quotidiennement. Dans cet article, nous explorerons comment utiliser GooglereCAPTCHA pour la vérification en PHP

Que dois-je faire si Win11 ne peut pas utiliser le navigateur ie11 ? (win11 ne peut pas utiliser le navigateur IE) Que dois-je faire si Win11 ne peut pas utiliser le navigateur ie11 ? (win11 ne peut pas utiliser le navigateur IE) Feb 10, 2024 am 10:30 AM

De plus en plus d'utilisateurs commencent à mettre à niveau le système Win11. Étant donné que chaque utilisateur a des habitudes d'utilisation différentes, de nombreux utilisateurs utilisent toujours le navigateur ie11. Alors, que dois-je faire si le système Win11 ne peut pas utiliser le navigateur ie ? Windows11 prend-il toujours en charge ie11 ? Jetons un coup d'œil à la solution. Solution au problème selon lequel Win11 ne peut pas utiliser le navigateur ie11 1. Tout d'abord, cliquez avec le bouton droit sur le menu Démarrer et sélectionnez « Invite de commandes (administrateur) » pour l'ouvrir. 2. Après ouverture, entrez directement « Netshwinsockreset » et appuyez sur Entrée pour confirmer. 3. Après confirmation, entrez « netshadvfirewallreset&rdqu ».

See all articles